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

Làm thế nào để nhóm số hàng mỗi ngày cũng trong những ngày không có hàng trong MySQL?

Để xử lý các ngày có 0 bản ghi tương ứng, cách làm thông thường của tôi là sử dụng bảng lịch để kết hợp.

Ví dụ:tạo một bảng với một trường có tên là calendar_date và điền nó vào mọi ngày kể từ 1st Jan 2000 đến 31st Dec 2070 hoặc một số phạm vi khác phù hợp với mục đích báo cáo của bạn.

Sau đó, sử dụng một cái gì đó như ...

SELECT
  calendar.calendar_date,
  COUNT(*)
FROM
  calendar
LEFT JOIN
  yourData
    ON  yourData.timeStamp >= calendar.calendar_date
    AND yourData.timeStamp <  calendar.calendar_date + 1
WHERE
      calendar.calendar_date >= '01 Jan 2012'
  AND calendar.calendar_date <  '04 Jan 2012'
GROUP BY
  calendar.calendar_date

Bảng này có thể có nhiều mục đích sử dụng bổ sung, chẳng hạn như gắn cờ các ngày lễ của ngân hàng, ngày bắt đầu của tuần và tháng. Với việc sử dụng cẩn thận các cờ và chỉ mục, bạn có thể tận dụng được nhiều điều từ nó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các bảng MySQL có cần ID không?

  2. Cách kiểm tra kết nối cơ sở dữ liệu PHP MySQL bằng Script

  3. MYSQL:CHỌN tổng các giá trị trường đồng thời CHỌN các giá trị duy nhất?

  4. Làm cách nào để sử dụng toán tử IN nhưng với điều kiện AND

  5. Vòng lặp qua Mảng trong PHP được trả về từ Truy vấn MySQL