首页 > 解决方案 > 如何选择一组预定义的值及其计数?

问题描述

为了设置问题,假设我想显示销售团队中三个人的总销售额。Bob 和 Alice 有销售,但 James 是新推销员,没有销售。

有一个表sales,其数据如下:

ID 卖方 数量
0 爱丽丝 5 美元
1 鲍勃 4 美元
2 爱丽丝 16 美元
3 鲍勃 6 美元

我可以像这样使用 SUM:

SELECT seller, SUM(amount)
FROM sales
GROUP BY seller

...产生一个结果集,如:

卖方 总销售额
爱丽丝 21 美元
鲍勃 10 美元

但是,这不包括新来的詹姆斯,没有销售。我想要的结果集是:

卖方 总销售额
爱丽丝 21 美元
鲍勃 10 美元
詹姆士 $0

问:如何获得包含 James(零)销售额的所需结果集?

请注意,销售人员列表不存储在任何其他表中;我希望我需要将它硬编码到我的查询中,但我不知道如何。

标签: sqlamazon-redshift

解决方案


理想情况下,您应该有一个要出现在报告中的专用卖家表格。没有这个,我们可以使用包含所有卖家名称的内联联合子查询。

SELECT t.seller, COALESCE(SUM(s.amount), 0) AS total_sales
FROM
(
    SELECT 'Alice' AS seller UNION ALL
    SELECT 'Bob' UNION ALL
    SELECT 'James'
) t
LEFT JOIN sales s
    ON s.seller = t.seller
GROUP BY
    t.seller;

推荐阅读