Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tính tổng giá trị giữa hai ngày trong MySQL với BETWEEN

Để tính tổng (SUM) các giá trị trong khoảng thời gian xác định, MySQL sử dụng mệnh đề WHERE với toán tử BETWEEN trên cột ngày tháng, sau đó áp dụng hàm tập hợp SUM().

Ví dụ minh họa

Tạo bảng mua hàng:

mysql> CREATE TABLE DemoTable1444 (
    Value INT,
    PurchaseDate DATETIME
);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1444 VALUES (40, '2019-01-10');
mysql> INSERT INTO DemoTable1444 VALUES (100, '2019-10-03');
mysql> INSERT INTO DemoTable1444 VALUES (170, '2019-11-21');
mysql> INSERT INTO DemoTable1444 VALUES (70, '2018-12-05');

Dữ liệu:

mysql> SELECT * FROM DemoTable1444;
+-------+---------------------+
| Value | PurchaseDate        |
+-------+---------------------+
|    40 | 2019-01-10 00:00:00 |
|   100 | 2019-10-03 00:00:00 |
|   170 | 2019-11-21 00:00:00 |
|    70 | 2018-12-05 00:00:00 |
+-------+---------------------+

Tính tổng từ 2019-10-02 đến 2019-12-31

mysql> SELECT SUM(Value) 
    FROM DemoTable1444 
    WHERE PurchaseDate BETWEEN '2019-10-02' AND '2019-12-31';

Kết quả (100 + 170 = 270):

+------------+
| sum(Value) |
+------------+
|        270 |
+------------+

Lưu ý quan trọng về BETWEEN với DATETIME

  • BETWEEN '2019-10-02' AND '2019-12-31' tương đương PurchaseDate >= '2019-10-02 00:00:00' AND PurchaseDate <= '2019-12-31 00:00:00'.
  • Nếu cột là DATETIME, ngày kết thúc '2019-12-31' chỉ bao gồm đến 00:00:00 sáng sớm — có thể bỏ sót dữ liệu trong ngày 31/12.
  • An toàn hơn: WHERE PurchaseDate >= '2019-10-02' AND PurchaseDate < '2020-01-01'.

Mở rộng: Tổng theo nhóm (GROUP BY)

SELECT 
    DATE(PurchaseDate) AS sale_date,
    SUM(Value) AS daily_total
FROM DemoTable1444
WHERE PurchaseDate >= '2019-10-02' AND PurchaseDate < '2020-01-01'
GROUP BY DATE(PurchaseDate)
ORDER BY sale_date;

Trả về tổng doanh thu từng ngày trong khoảng thời gian.