我有一个有两列的表:
日期:所有日期从1/1 / 16-12 / 31/16
ID:作为文本字段的唯一标识符。特定ID可能会在多天内发生,也可能不会发生。
我想计算每天不同ID的滚动7天计数。这是一天做SQL的SQL:
1/7/16:
Select '2017-01-07' as week_end_date, count(distinct(id)) as ids
from table
where date between '2016-01-01' and '2016-01-07'
不是每次运行上述查询365次,每个日期一次,是否有办法在一个查询中执行此操作?
答案 0 :(得分:1)
计算不同的ID很棘手。如果性能不是问题,您可以这样做:
Select week_start_date + interval '6 day' as week_end_date,
count(distinct id) as ids
from table join
generate_series('2016-01-01'::date, '2017-01-01'::date, interval '1 day') as g(week_start_date)
where date between week_start_date and week_start_date + interval '6 day';