【发布时间】:2015-03-15 15:11:40
【问题描述】:
我有桌子event:
event_date,
num_events,
site_id
我可以很容易地使用聚合 SQL 来做SELECT SUM(num_events) GROUP BY site_id。
但我还有另一张桌子site:
site_id,
target_date
我想做一个 JOIN,在 target_date、90 天、120 天等的 60 天内显示 num_events 的总和。我认为这可以使用 WHERE 子句轻松完成聚合 SQL。然而,这因两个挑战而变得复杂:
-
target_date不固定,但每个site_id都不同 - 我希望在同一个表中输出多个日期范围;所以我不能做一个简单的
WHERE来排除超出event表范围的记录。
我想到的一种解决方法是简单地进行多个查询,每个日期范围一个,然后使用视图将它们粘贴在一起。有没有更简单、更好或更优雅的方式来实现我的目标?
【问题讨论】:
-
可能发布一些示例数据和预期输出。
-
您的 Postgres 版本对于这个问题至关重要。
标签: sql postgresql aggregate-functions aggregate-filter