Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

การคำนวณ SUM ระหว่างสองวันที่ใน MySQL ด้วย BETWEEN

เมื่อต้องการรวมค่าตัวเลข (SUM) ของแถวที่อยู่ในช่วงวันที่เฉพาะ สามารถใช้เงื่อนไข BETWEEN ในส่วน WHERE ได้ ซึ่งรองรับชนิดข้อมูล DATE, DATETIME, และ TIMESTAMP

ตัวอย่างการใช้งาน

สร้างตารางขายสินค้า:

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

เพิ่มข้อมูล:

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');

ดูข้อมูล:

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 |
+-------+---------------------+

คำนวณ SUM ระหว่าง 2019-10-02 ถึง 2019-12-31:

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

ผลลัพธ์ (100 + 170 = 270):

+------------+
| SUM(Value) |
+------------+
|        270 |
+------------+

รายละเอียด BETWEEN

  • Inclusive: รวมค่าขอบเขตทั้งสองข้าง (>= เริ่มต้น และ <= สิ้นสุด)
  • ทำงานกับตัวเลข, วันที่, เวลา, และสตริงได้
  • เทียบเท่ากับ: WHERE PurchaseDate >= '2019-10-02' AND PurchaseDate <= '2019-12-31'

คำแนะนำสำคัญเกี่ยวกับ DATETIME

หากคอลัมน์เป็น DATETIME และเงื่อนไขสิ้นสุดเป็นแค่วันที่ (ไม่มีเวลา) จะถูกตีความว่า 2019-12-31 00:00:00 ทำให้ข้อมูลเวลา 2019-12-31 10:00:00 ไม่ถูกรวม

แก้ไข: ใช้ '2019-12-31 23:59:59' หรือ DATE(PurchaseDate) BETWEEN '2019-10-02' AND '2019-12-31'

การประยุกต์ใช้

  • รายงานยอดขายรายเดือน/รายไตรมาส
  • สรุปยอดสั่งซื้อในช่วงโปรโมชั่น
  • คำนวณภาษี/ค่าคอมมิชชั่นในช่วงเวลาที่กำหนด
  • Dashboard แสดง KPI ตามช่วงวันที่ผู้ใช้เลือก