【问题标题】:How to group by in list and fill zero如何在列表中分组并填充零
【发布时间】:2021-05-07 03:14:03
【问题描述】:

我有像{a,b,c,d}这样的输出列表

和下面的表格

type score
a     1
a     2
c     1

我想按type 分组,如下所示

select 
type
,count(type)
from table
group by 1

它返回就像

a 2
c 1

但我想要的结果就像下面的一样,它与我想要的输出列表 {a,b,c,d} 对齐

a   2
b   0
c   1
d   0

如何改变我的sql来达到这个结果?

如果有人有意见,请告诉我

谢谢

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您需要某种日历表,其中包含您希望在报告中显示的所有类型。取而代之的是,您可以使用内联联合子查询,然后将其加入当前表并按类型聚合:

    SELECT c.type, COUNT(t.type) AS cnt
    FROM
    (
        SELECT 'a' AS type UNION ALL
        SELECT 'b' UNION ALL
        SELECT 'c' UNION ALL
        SELECT 'd'
    ) c
    LEFT JOIN yourTable t
        ON t.type = c.type
    GROUP BY
        c.type
    ORDER BY
        c.type;
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2021-08-07
      • 2021-03-11
      • 2017-06-17
      • 2015-05-17
      相关资源
      最近更新 更多