Vấn đề: Đếm tần suất của một giá trị DATE xác định
Cột ShippingDate kiểu DATE. Cần đếm số hàng có ngày = '2019-12-11'.
Giải pháp: COUNT(*) với WHERE date() = 'yyyy-mm-dd'
1. Tạo bảng và dữ liệu
CREATE TABLE DemoTable (ShippingDate DATE);
INSERT INTO DemoTable VALUES
('2019-12-11'), ('2018-12-11'), ('2017-12-11'),
('2019-04-22'), ('2019-12-11'), ('2015-12-11');
2. Dữ liệu
+--------------+
| ShippingDate |
+--------------+
| 2019-12-11 |
| 2018-12-11 |
| 2017-12-11 |
| 2019-04-22 |
| 2019-12-11 |
| 2015-12-11 |
+--------------+
3. Truy vấn đếm ngày '2019-12-11'
SELECT COUNT(*) FROM DemoTable
WHERE DATE(ShippingDate) = '2019-12-11';
DATE() trích xuất phần ngày từ DATETIME (nếu cột là DATETIME). Với cột DATE thì không cần nhưng an toàn.
4. Kết quả
+----------+
| COUNT(*) |
+----------+
| 2 |
+----------+
Mở rộng: Đếm tất cả ngày (thống kê tần suất)
SELECT ShippingDate, COUNT(*) AS Frequency
FROM DemoTable
GROUP BY ShippingDate
ORDER BY Frequency DESC;
Lưu ý hiệu suất
- Cột
DATEcó index →WHERE ShippingDate = '2019-12-11'dùng index (range/ref). - Cột
DATETIME+DATE(ShippingDate) = '...'→ không dùng index (function trên cột). - Tối ưu cho DATETIME:
WHERE ShippingDate >= '2019-12-11' AND ShippingDate < '2019-12-12'(range scan dùng index).