[英]MySQL Query to group by date range
我對此查詢有疑問:
SELECT
YEAR(passDate) as Year,
count(*) AS total_amount
FROM
`dsp_drop_pass_details`
WHERE passDate
BETWEEN '2009-01-01'
AND '2012-05-01'
AND batch='DROPOUT'
GROUP BY YEAR(passDate)
ORDER BY YEAR(passDate)
輸出-
Month total amount
2011 30
2012 20
但是我的願望是
Month total amount
2009 0
2010 0
2011 40
2012 20
我想要0,計數為0
最簡單的方法是在表中列出所有需要的年份。
create table Years(yearValue int);
insert into years values (2001), (2002)..., (2020);
然后在實際表上進行左聯接。
SELECT y.yearValue, COALESCE(COUNT(d.id), 0) --assumning you have a field id in dsp_drop_pass_details
FROM years y
LEFT join dsp_drop_pass_details d on y.yearValue = YEAR(d.passDate)
WHERE y.yearValue between 2009 and 2012
GROUP BY y.yearValue
ORDER BY y.yearValue;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.