如何在列表中分组并填充零

Posted

技术标签:

【中文标题】如何在列表中分组并填充零【英文标题】: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来达到这个结果?

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

谢谢

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何在列表中分组并填充零的主要内容,如果未能解决你的问题,请参考以下文章

语法错误:创建一个用零填充的二维列表

如何在 BigQuery 中生成日期系列并为缺失的销售数据填充零

如何使用Javascript中的AES CBC零填充进行加密并使用Java进行解密

Python 在时间序列数据框中填充零并保留现有值

Excel分组快速自动填充编号

如何在 keras conv 层中进行零填充?