2017-08-16 15 views
1

鮮明我有一個具有2列的表格:
日期:所有的日期爲1/1/16-12 /16分之31
ID:唯一標識符是文本字段。特定的ID可能會或可能不會在多天內發生。滾動軸承第7天計數PostgreSQL中

我想計算每天不同ID的滾動7天計數。這裏是SQL做了一個單一的一天:

16年1月7日:

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

計數不同的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'; 
+0

你太棒了!奇怪的唯一情況是由generate_series函數生​​成的日期顯示很奇怪。例如: 2017-07-18 20:00:00 顯示日期'2017-07-19'。它正確查詢,並提供正確的答案,但格式是關閉了4個小時它出現。 有沒有辦法調整它? – Mark

+0

這是因爲服務器在格林尼治標準時間,但我把結果拉回到我在EDT的筆記本電腦。問題解決了!再次感謝您的幫助Gordon! – Mark

+0

@Mark。 。 。你可以從'g.dte'中增加或減去4小時。 –