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

MySQL hiển thị số 0 cho các ngày không có bản ghi

Ok từ câu trả lời trước của tôi từ chuỗi MySql Single Table, Chọn 7 ngày qua và bao gồm các hàng trống

Đây là những gì bạn có thể làm để làm cho lựa chọn ngày động

select 
t1.attempt_date,
coalesce(SUM(t1.attempt_count+t2.attempt_count), 0) AS attempt_count
from
(
  select DATE_FORMAT(a.Date,'%Y/%m/%d') as attempt_date,
  '0' as  attempt_count
  from (
    select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
    from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
    cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
  ) a
  where a.Date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
)t1
left join
(
  SELECT DATE_FORMAT(attempt_date,'%Y/%m/%d') AS attempt_date, 
  COUNT(*) AS attempt_count
  FROM users_attempts
  WHERE DATE_SUB(attempt_date, INTERVAL 1 DAY) > DATE_SUB(DATE(NOW()), INTERVAL 1 WEEK) 
  GROUP BY DAY(attempt_date) DESC
)t2
on t2.attempt_date = t1.attempt_date
group by DAY(t1.attempt_date)
order by t1.attempt_date desc;

DEMO



  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àm cách nào để loại bỏ khoảng cách dòng giữa các dòng trong Textarea?

  2. Tìm sự phụ thuộc hàm

  3. Lỗi WAMP / MySQL không đúng ngôn ngữ

  4. CHỌN của chế độ xem chứa một truy vấn con trong mệnh đề FROM

  5. Làm việc xung quanh lỗi MySQL Đã tìm thấy khóa chết khi cố gắng lấy khóa; thử bắt đầu lại giao dịch