SQL查询 - 两个计数不同的粒度

时间:2018-01-10 12:57:36

标签: sql count aggregate amazon-redshift granularity

所以我有两张桌子;

enter image description here enter image description here

加入时(ID上的OUTER JOIN)看起来像这样

enter image description here

现在,我想创建一个Query,它统计所有事件及其相应的Location。鉴于上面的例子,它应该是这样的;

enter image description here

关键是COUNT(Event)需要聚合在比COUNT(Location)更高的级别。即,Count(事件)是整个月内该事件的总计数。计数(位置)只是事件计数,分为相关位置。

我无法获得我的查询以比位置更高的级别聚合计数事件。

很高兴提供更多细节

由于

1 个答案:

答案 0 :(得分:0)

您可以使用窗口功能来实现此目的:

select
  t1.Month,
  t1.Event,
  t2.Location,
  count (*)
    over (partition by t1.Event) as EventCount,
  count (*)
    over (partition by t1.Event, t2.Location) as LocationCount
from Table1 t1
left join Table2 t2
  on t1.Id = t2.Id

SQLFiddle: http://sqlfiddle.com/#!6/b55b3/8