Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm sự khác biệt giữa hai giá trị trong cùng một cột trong MySQL

Ok, đã về nhà và có thể tìm ra điều này.

SELECT stock_id, t1.price AS `then`, t2.price AS `now`, ROUND(t2.price - t1.price, 2) AS `difference`
FROM (
        SELECT stock_id, price, date FROM share_prices sp
        WHERE  date = (SELECT MIN(date) FROM share_prices sp2
                       WHERE date BETWEEN '2010/02/23 10:00:00'
                       AND '2010/02/24 10:00:00'
                       AND sp2.stock_id = sp.stock_id)
    ) t1
    JOIN
    (
        SELECT stock_id, price, date FROM share_prices sp
        WHERE  date = (SELECT MAX(date) FROM share_prices sp2
                       WHERE date BETWEEN '2010/02/23 10:00:00'
                       AND '2010/02/24 10:00:00'
                       AND sp2.stock_id = sp.stock_id)
    ) t2 USING(stock_id)
ORDER BY `difference` DESC

Sử dụng kết quả từ 2 truy vấn con, mỗi truy vấn con có truy vấn con của riêng chúng cho lần lượt truy vấn đầu tiên và cuối cùng, ghi lại cho phạm vi đó.

Tôi đang sử dụng integer cho stock_id , float cho pricetimestamp cho ngày, vì có thể có vấn đề (đặc biệt là với MIN và MAX) với các loại dữ liệu khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO tương đương với mysql_client_encoding ()?

  2. Chuyển đổi ngày carbon thành dấu thời gian mysql.

  3. Sử dụng tham số URL trong tìm kiếm MYSQL

  4. UTC_TIMESTAMP () có bị ảnh hưởng bởi tiết kiệm ánh sáng ban ngày không?

  5. Làm thế nào để sử dụng Spring Boot với cơ sở dữ liệu MySQL và JPA?