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

Đếm số lần xuất hiện của một ngày cụ thể trong bảng MySQL

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 DATE có 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).