对可能值进行分组的 SQL 查询,如果计数为零则输出空白行?

问题描述 投票:0回答:1

假设我是百货商店经理,我需要统计不同商店 A.B C 和 D 的销售额。

代码类似于

select   
"Sales" as V1,
count(distinct case when XXX) as V1,
count(distinct case when XXX) as V2,
count(distinct case when XXX) as V3,


from sales_data
group by store;

但是在当前的销售数据集中,到目前为止只有商店 A 和 B 的数据,上面的输出将只有商店 A 和 B 的行,而不是 C 和 D 的行。我如何使输出为“ store”,即使它不存在于数据集中,所以它总是为每个商店输出?

部门 身份证 销售
A 01 5
A 01 4
B 02 2
A 03 3

所以我想要按部门划分的产出销售

部门 总计
A 12
B 2
C 0

我想执行按部门分组的其他查询,但我希望查询输出考虑每个部门,即使没有像上面这样的数据

谢谢

我知道这可能很基本,但我尝试用谷歌搜索,但找不到任何东西

sql sas
1个回答
0
投票

您应该使用

SUM()
函数而不是
COUNT()
:

SELECT t.Department,
       COALESCE(SUM(Sale), 0) as Total
FROM (
  SELECT 'A' AS Department
  UNION ALL SELECT 'B'
  UNION ALL SELECT 'C'
) AS t 
LEFT JOIN sales_data s ON s.Department = t.Department
GROUP BY t.Department
© www.soinside.com 2019 - 2024. All rights reserved.