I want to get a report of my eco_orders table that how much order i get in a day for last 7days. I got the result with below sql and it’s absolutely fine. but the problem is I want to include the non order day count with zero
JavaScript
x
SELECT DAYNAME(created_at) AS DAY, count(*)
FROM `eco_orders`
WHERE created_at >= DATE(NOW()) - INTERVAL 7 DAY
GROUP BY DAY;
my output
+-----------+----------+
| DAY | count(*) |
+-----------+----------+
| Thursday | 1 |
| Wednesday | 2 |
+-----------+----------+
JavaScript
expected output
+-----------+----------+
| DAY | count(*) |
+-----------+----------+
| Saturday | 0 |
| Sunday | 0 |
| Monday | 0 |
| Tuesday | 0 |
| Wednesday | 2 |
| Thursday | 1 |
| Friday | 0 |
+-----------+----------+
Advertisement
Answer
You can try this option –
JavaScript
select t.d,cnt from
(
select 'Saturday' as d union all
select 'Sunday' union all
select 'Monday' union all
select 'Tuesday' union all
select 'Wednesday' union all
select 'Thursday' union all
select 'Friday'
)t left join
(
SELECT DAYNAME(created_at) AS DAY, count(*) as cnt
FROM `eco_orders`
WHERE created_at >= DATE(NOW()) - INTERVAL 7 DAY
GROUP BY DAY
)t1 on t.d=t1.day