簡體   English   中英

MySQL查詢按日期范圍分組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM