Mysql
 sql >> база данни >  >> RDS >> Mysql

MySql Единична таблица, Изберете последните 7 дни и включете празни редове

Това не е лесно. Взех помощ от тази нишка генериране на дни от период от време и го комбинирате с вашата заявка.

Така че идеята беше да получите списъка с дати от последните 7 дни, след което оставите да присъедините тези дати със статична сума 0 към заявката, която имате, и накрая да ги сумирате. Това може да се използва за всеки период от време, просто трябва да ги промените и в двете заявки

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

ДЕМО



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL SELECT WHERE дата и час съвпада с ден (и не непременно час)

  2. tomcat7 - jdbc източник на данни - Това е много вероятно да създаде изтичане на памет

  3. Примерна база данни на MySQL

  4. MySQL добавя дни към дата

  5. Наблюдение на вашите бази данни с MySQL Enterprise Monitor