【发布时间】:2016-05-31 05:29:43
【问题描述】:
使用 Postgres 9.3,我试图计算某种天气类型的连续天数。如果我们假设我们有定期的时间序列和天气报告:
date|weather
"2016-02-01";"Sunny"
"2016-02-02";"Cloudy"
"2016-02-03";"Snow"
"2016-02-04";"Snow"
"2016-02-05";"Cloudy"
"2016-02-06";"Sunny"
"2016-02-07";"Sunny"
"2016-02-08";"Sunny"
"2016-02-09";"Snow"
"2016-02-10";"Snow"
我想要计算同一天气的连续天数。结果应如下所示:
date|weather|contiguous_days
"2016-02-01";"Sunny";1
"2016-02-02";"Cloudy";1
"2016-02-03";"Snow";1
"2016-02-04";"Snow";2
"2016-02-05";"Cloudy";1
"2016-02-06";"Sunny";1
"2016-02-07";"Sunny";2
"2016-02-08";"Sunny";3
"2016-02-09";"Snow";1
"2016-02-10";"Snow";2
我一直在努力尝试使用窗口函数。起初,它似乎应该是显而易见的,但后来我发现它比预期的要困难得多。
这是我尝试过的...
Select date, weather, Row_Number() Over (partition by weather order by date)
from t_weather
将当前行与下一行进行比较会更好吗?在保持计数的同时,您将如何做到这一点?任何想法、想法甚至解决方案都会有所帮助! -基普
【问题讨论】:
-
你不能简单地按天气做一个计数(日期)组
标签: sql postgresql window-functions gaps-and-islands