【发布时间】:2012-11-01 19:04:16
【问题描述】:
这是一个简单的问题,我不确定这里是否可行。问题来了:
=> http://sqlfiddle.com/#!12/584f1/7
解释:
- 票属于与会者
- 与会者有收入
- 我需要按部分对门票进行分组并获得总收入。
- 这会重复计算与会者,因为 2 张门票可以属于同一与会者,因此会重复计算。我想获取收入的总和,但只计算参加者一次。
在我的 sqlfiddle 示例中,我想看看:
section | total_revenue
------------------------
A | 40 <= 40 is correct, but I'm getting 50...
B | null
C | 40
我想在不使用子查询的情况下解决这个问题。我需要一个可扩展的解决方案,它允许我在单个查询中对不同连接上的多个列执行此操作。所以无论我做什么,我都愿意接受建议。
感谢您的帮助。
【问题讨论】:
-
它已经为我工作了......
-
我将此标记为重复,但仔细检查后发现并非如此。它密切相关,但与the previous question 不同。不要关闭它。
-
您似乎误以为子查询天生就较慢或不可扩展。事实并非如此。在 SELECT 列表中使用子查询可能需要您对每个值重复它,这并不理想 - 但
FROM或 CTE 中的子查询可能是解决代码和性能方面问题的最有效方法。因此,我建议您将该要求削弱为“不在 SELECT 列表中使用子查询”。
标签: sql postgresql distinct aggregate-functions