[英]grouping equal values - aggregate function problem
我创建了一个表格,其中列出了多个事件发生的场所。 同一场地的同一活动可能有不同的价格。 最后一列计算一个场所的总收入。
SELECT venuename,
eventname,
totalprice,
SUM(totalprice) OVER (PARTITION BY venuename)
FROM venue
INNER JOIN event e ON venue.venueid = e.venueid
INNER JOIN listing l ON e.eventid = l.eventid;
会场 | 事件 | 总价 | 和 |
---|---|---|---|
会场A | 事件A | 5个 | 30 |
会场A | 事件A | 10 | 30 |
会场A | 事件B | 5个 | 30 |
会场A | 事件A | 5个 | 30 |
会场A | 事件B | 5个 | 30 |
会场B | 事件 C | 3个 | 15 |
会场B | 事件D | 6个 | 15 |
会场B | 事件D | 6个 | 15 |
现在我想将相等的事件分组并计算场地中一个事件的总收入。
结果应该是这个样子:
会场 | 事件 | 总价 | 和 |
---|---|---|---|
会场A | 事件A | 20 | 30 |
会场A | 事件B | 10 | 30 |
会场B | 事件 C | 3个 | 15 |
会场B | 事件D | 12 | 15 |
我解决这个问题的想法是这样的:
SELECT venuename,
eventname,
SUM(totalprice),
SUM(totalprice) OVER (PARTITION BY venuename)
FROM venue
INNER JOIN event e ON venue.venueid = e.venueid
INNER JOIN listing l ON e.eventid = l.eventid
GROUP BY eventname;
但这似乎是不可能的,因为 vanuename 也必须是聚合 function 的一部分。 但是我真的想不出解决这个问题的主意。
希望你们中的任何人都可以帮助我解决这个问题。
你好
您可以组合一个 agrregate 和一个 window function
SELECT venuename,
eventname,
SUM(totalprice) totalprice,
SUM(SUM(totalprice)) OVER (PARTITION BY venuename) sum
FROM venue
INNER JOIN event e ON venue.venueid = e.venueid
INNER JOIN listing l ON e.eventid = l.eventid
GROUP BY venuename, eventname;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.