如果在特定日期不存在,MySQL Query将针对属性返回零

时间:2015-06-12 13:18:00

标签: mysql sql

我需要为以下结果编写MySQ查询 我使用了以下查询来获取以下内容

select date(modified_date) as date,category_rating,count(*) from  fms_process_feedback group by date,category_rating;

Date        subcategory  count
2015-05-20  good         1
2015-05-21  bad          1
2015-05-25  bad          1
2015-05-25  good         1
2015-05-26  bad          6
2015-05-26  good         16

我需要查询以下面的格式返回数据

Date        subcategory  count
2015-05-20  good    1
2015-05-20  bad     0
2015-05-21  bad     1
2015-05-21  good    0
2015-05-25  bad     1
2015-05-25  good    1
2015-05-26  bad     6
2015-05-26  good    16

如果上面的子类别好或坏的特定日期没有条目,我需要查询返回零。

1 个答案:

答案 0 :(得分:1)

您想要所有子类别和日期。因此,首先使用cross join生成行。然后使用left join

引入数据
select d.dte, r.category_rating, count(f.modified_date)
from (select distinct date(modifed_date) as dte from fms_process_feedback) d cross join
     (select distinct category_rating from fms_process_feedback) r left join
     fms_process_feedback pf
     on date(pf.modified_date) = d.dte and
        pf.category_rating = r.category_rating
group by d.dte, r.category_rating;