Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pojedyncza tabela MySql, wybierz ostatnie 7 dni i uwzględnij puste wiersze

To nie jest łatwe. Skorzystałem z pomocy tego wątku generuj dni z zakresu dat i połączył je z Twoim zapytaniem.

Pomysł polegał więc na tym, aby uzyskać listę dat z ostatnich 7 dni, a następnie połączyć te daty ze statyczną liczbą 0 do zapytania, które masz, a następnie je zsumować. Można to wykorzystać dla dowolnego zakresu dat, wystarczy zmienić je w obu zapytaniach

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. Utwórz nowego użytkownika w MySQL i daj mu pełny dostęp do jednej bazy danych

  2. Czy istnieje odpowiednik SQLite do DESCRIBE [tabela] MySQL?

  3. Ograniczenie CHECK w MySQL nie działa

  4. Uzyskaj aktualną wartość AUTO_INCREMENT dla dowolnej tabeli

  5. Jak mogę zmienić MariaDB na MySQL w XAMPP?