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

Nhóm theo ngày và vẫn hiển thị ngày không có hàng?

MySQL sẽ không phát minh ra các hàng cho bạn, vì vậy nếu dữ liệu không có ở đó, chúng sẽ tự nhiên không được hiển thị.

Bạn có thể tạo một bảng lịch và tham gia vào đó,

create table calendar (
    day date primary key,
);

Điền vào bảng này với ngày tháng (dễ dàng với một thủ tục được lưu trữ hoặc chỉ một số tập lệnh chung), cho đến khoảng năm 2038 và một cái gì đó khác có thể sẽ phá vỡ đơn vị và trở thành một vấn đề.

Khi đó, truy vấn của bạn sẽ trở thành ví dụ:

SELECT logTime, COUNT(*) 
  FROM calendar cal left join logs l on cal.day = l.logTime 
WHERE day >= '2011-02-01' AND day <= '2011-02-04' GROUP BY day;

Giờ đây, bạn có thể mở rộng bảng lịch với các cột khác cho bạn biết tháng, năm, tuần, v.v. để bạn có thể dễ dàng tạo thống kê cho các đơn vị thời gian khác. (và những người theo chủ nghĩa thuần túy có thể tranh luận rằng bảng lịch sẽ có khóa chính là số nguyên id mà bảng nhật ký tham chiếu thay vì ngày tháng)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy cập cơ sở dữ liệu từ xa mysql từ dòng lệnh

  2. Sắp xếp theo thứ tự của các giá trị trong mệnh đề SQL IN ()

  3. Tôi có nên sử dụng NULL hay một chuỗi trống để biểu thị không có dữ liệu trong cột bảng không?

  4. Không thể kết nối với cơ sở dữ liệu (000webhost)

  5. Nhóm các hàng tương tự bên cạnh nhau trong MySQL