如何在列表中分组并填充零
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 中生成日期系列并为缺失的销售数据填充零