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

MySQL làm thế nào để điền vào các giờ / ngày còn thiếu trong phạm vi?

Không phải là đẹp nhất. Nhưng nó sẽ thành công nếu bạn thực sự không thể sử dụng bảng tạm thời:

select ifnull(count,0) as count,dh.hour_of_day,
dh.day_of_week,date_format((date('2012-01-02') + interval dh.day_of_week day),'%W') as name_of_day
from
(
select day_of_week,hour_of_day
from 
(
 select 0 as day_of_week union select 1 union select 2 union select 3 
 union select 4 union select 5 union select 6
) d
 join
(
 select 0 as hour_of_day 
 union select 1 union select 2 union select 3 union select 4 
 union select 5 union select 6 union select 7 union select 8
 union select 9 union select 10 union select 11 union select 12
 union select 13 union select 14 union select 15 union select 16
 union select 17 union select 18 union select 19 union select 20
 union select 21 union select 22 union select 23
) h
) dh
left outer join
(
SELECT
count(id) as count,
HOUR(created) as hour_of_day,
WEEKDAY(created) as day_of_week,
DATE_FORMAT(created,'%W') name_of_day
FROM visitors
GROUP BY day_of_week,hour_of_day
) v on dh.day_of_week = v.day_of_week and dh.hour_of_day = v.hour_of_day
ORDER BY dh.day_of_week,dh.hour_of_day ASC; 

Hãy cẩn thận với điều này mặc dù! Nếu bạn chạy truy vấn trong nhiều tuần thì nhiều ngày trong tuần sẽ được cộng lại với nhau. Bạn có thể muốn xem xét thêm một vị từ 'chỉ trong tuần này'. Ví dụ:thêm vào where yearweek(created) = yearweek(now()) vào lựa chọn ban đầu của bạn để chỉ lấy dữ liệu cho tuần hiện tại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LỖI 1215:Không thể thêm ràng buộc khóa ngoại khi sử dụng ON DELETE SET NULL

  2. Cách triển khai phân trang dữ liệu php-mysql bằng cách sử dụng nhà cung cấp dữ liệu

  3. Tự động đặt __tablename__ cho sharding trong SQLAlchemy?

  4. gcc sẽ không biên dịch và chạy thư viện MySQL C

  5. Làm thế nào để loại bỏ khoảng trắng theo sau trong MySQL