SQL Group by 空值补0的写法

我有一个月空气质量的数据表,在这个表里我有优、良、轻度污染、重度污染等等等级,我现在向查询这一个月内每一种等级的天数,那我就要用到group by,但是如果这一个月没有某一种等级,我想在返回结果的地方补0,请问要怎么写。求大神。。。。
图片说明
这是我的表结构,我需要查询的是某个月,某个城市id的各种等级的天数。

3个回答

nvl(天数,0);天数为空,则返回0.

-- SQL Server
WITH
/* 测试数据
 空气质量表(日期,等级) AS (
    SELECT '01-01','良' UNION ALL
    SELECT '01-02','良' UNION ALL
    SELECT '01-02','轻度污染'
), */
X(等级) AS (
    SELECT '优' UNION ALL
    SELECT '良' UNION ALL
    SELECT '轻度污染' UNION ALL
    SELECT '重度污染'
)
    SELECT x.等级,
           COUNT(t.日期) AS 天数
      FROM x
 LEFT JOIN 空气质量表 t
        ON x.等级 = t.等级
  GROUP BY x.等级
等级            天数
-------- -----------
优                 0
良                 2
轻度污染           1
重度污染           0
Tiger_Zhao
Tiger_Zhao 回复wangwei6125: 图没看明白,数据请举个例子。
3 年多之前 回复
wangwei6125
塞思克Cesc 并不行,还是没有0,我把问题补充了,你再看一下吧,谢谢啦
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问