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

MySql Single Table, Chọn 7 ngày qua và bao gồm các hàng trống

Điều này không dễ dàng. Tôi đã nhận trợ giúp từ chuỗi này tạo ngày từ phạm vi ngày và kết hợp nó với truy vấn của bạn.

Vì vậy, ý tưởng là lấy danh sách các ngày từ 7 ngày trước, sau đó kết hợp các ngày này với số tiền tĩnh 0 vào truy vấn bạn có và sau đó tổng hợp chúng. Điều này có thể được sử dụng cho bất kỳ phạm vi ngày nào, chỉ cần thay đổi chúng trong cả hai truy vấn

select 
t1.purchase_date,
coalesce(SUM(t1.amount+t2.amount), 0) AS amount
from
(
  select DATE_FORMAT(a.Date,'%Y-%m-%d') as purchase_date,
  '0' as  amount
  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(purchase_date, '%Y-%m-%d') as purchase_date,
  coalesce(SUM(amount), 0) AS amount
  FROM transactions
  WHERE purchase_date BETWEEN NOW() - INTERVAL 7 DAY AND NOW()
  AND vendor_id = 0
  GROUP BY purchase_date
)t2
on t2.purchase_date = t1.purchase_date
group by t1.purchase_date
order by t1.purchase_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. Ví dụ về CURTIME () - MySQL

  2. Chuỗi thoát thực và PDO

  3. Những thiếu sót của mysql_real_escape_string?

  4. Có cách nào để hiển thị mệnh đề WHERE chỉ cho một trường trong MySQL không?

  5. Làm thế nào để cài đặt mô-đun Python MySQLdb bằng pip?