簡體   English   中英

按年份計數行,如果沒有結果,則將行添加0值

[英]Count rows by year and add row with 0 value if no result

假設我有一個帶有這些行的MySQL表:

Name | date
-----------
A | 2016
B | 2016
C | 2016
B | 2015
B | 2015
C | 2014
A | 2014

如何按名稱對行進行計數以得到這樣的結果(假設我要對2013年至2016年之間的年份進行計數):

Name | date | COUNT(Name)
-------------------------
A | 2016    | 1
B | 2016    | 1
C | 2016    | 1
A | 2015    | 0
B | 2015    | 2
C | 2015    | 0
A | 2014    | 1
B | 2014    | 0
C | 2014    | 1
A | 2013    | 0
B | 2013    | 0
C | 2013    | 0

如yu所見,如果它們在另一年中至少出現一次(我的結果必須比現有的行多“多”),則需要在該年的結果集中“添加”行! 例如,由於我要計算從2013年開始的年份,因此表中也沒有需要的結果行。

謝謝文斯

使用cross join生成行。 然后使用left join和聚合計數。

select t.name, y.yyyy, count(t.name)
from (select distinct name from t) n cross join
     (select 2013 as yyyy union all select 2014 union all select 2015 union all select 2016) y left join
     t 
     on t.date = y.yyyy and t.name = n.name
group by t.name, y.yyyy;

嘗試這個

SELECT *,count(*) as c FROM mytable group by date, name

從表中按名稱,日期選擇名稱,日期,計數(名稱)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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