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

SQL cách trừ kết quả hàng 1 từ hàng 2, hàng 2 từ hàng 3

Bạn có thể muốn xem xét các biến do người dùng xác định , và sau đó bạn có thể muốn làm điều gì đó như sau:

SET @prev := NULL;
SELECT
    DATE(created_at),
    price - COALESCE(@prev, price) AS price_change,
    name,
    (@prev := price) AS price FROM (
        SELECT * FROM items ORDER BY DATE(created_at)
    ) t1
GROUP BY
    name, price, DATE(created_at)
HAVING name = 'Ibuprofen'
ORDER BY DATE(created_at);
Query OK, 0 rows affected (0.00 sec)

Tôi chưa kiểm tra cú pháp nên có thể hơi sai nhưng đó là ý kiến ​​chung. Lưu ý rằng tôi đã thêm ngày để bạn có thể đặt hàng theo ngày đó, nếu không kết quả có thể vô nghĩa.

CHỈNH SỬA:

Vừa chạy cái này trên máy của tôi:

SET @prev := NULL;
SELECT
    DATE(created_at),
    price - COALESCE(@prev, price) AS price_change,
    name,
    (@prev := price) AS price FROM (
        SELECT * FROM items ORDER BY DATE(created_at)
    ) t1
GROUP BY
    name, price, DATE(created_at)
HAVING name = 'Ibuprofen'
ORDER BY DATE(created_at);

Query OK, 0 rows affected (0.00 sec)

+------------------+--------------+-----------+-------+
| DATE(created_at) | price_change | name      | price |
+------------------+--------------+-----------+-------+
| 2018-12-10       |            0 | Ibuprofen |   110 |
| 2018-12-13       |          -10 | Ibuprofen |   100 |
| 2018-12-13       |           20 | Ibuprofen |   120 |
+------------------+--------------+-----------+-------+

3 rows in set, 1 warning (0.00 sec)

SELECT * FROM items;
+----+-------+----------------+---------------------+
| id | price | name           | created_at          |
+----+-------+----------------+---------------------+
|  8 |   100 | Ibuprofen      | 2018-12-13 12:52:35 |
|  9 |   110 | Ibuprofen      | 2018-12-10 12:12:12 |
| 10 |   120 | Ibuprofen      | 2018-12-13 12:52:35 |
| 11 |  1000 | Something else | 2018-12-13 13:01:19 |
+----+-------+----------------+---------------------+

4 rows in set (0.00 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mảng từ nhiều biểu mẫu tải lên, Hình ảnh tải lên sau đó chèn vào cơ sở dữ liệu (PHP, MySQL)

  2. yii2 cách sử dụng tìm kiếm với sqldataProvider

  3. Sắp xếp truy vấn MySQL theo Vĩ độ / Kinh độ

  4. Làm thế nào để cập nhật trên tầng trong MySQL?

  5. Xóa các mục nhập cơ sở dữ liệu thông qua các hộp kiểm