Sof*_*Guy 3 sql database postgresql database-schema
我有以下数据:
Date Code
2014-08-01 A
2014-08-02 A
2014-08-03 A
2014-08-04 A
2014-08-05 A
2014-08-06 A
2014-08-07 A
2014-08-08 XXXX
2014-08-09 XXXX
2014-08-10 BB
2014-08-11 CCC
2014-08-12 CCC
2014-08-13 CCC
2014-08-14 CCC
2014-08-15 CCC
2014-08-16 CCC
2014-08-17 CCC
2014-08-18 XXXX
2014-08-19 XXXX
2014-08-20 XXXX
2014-08-21 XXXX
2014-08-22 XXXX
2014-08-23 XXXX
2014-08-24 XXXX
2014-08-25 XXXX
2014-08-26 XXXX
2014-08-27 XXXX
2014-08-28 XXXX
2014-08-29 XXXX
2014-08-30 XXXX
2014-08-31 XXXX
Run Code Online (Sandbox Code Playgroud)
我想用代码和日期范围对数据进行分组,以便输出变为:
Min Date Max Date Code
2014-08-01 2014-08-07 A
2014-08-08 2014-08-09 XXXX
2014-08-10 2014-08-10 BB
2014-08-11 2014-08-17 CCC
2014-08-18 2014-08-31 XXXX
Run Code Online (Sandbox Code Playgroud)
我已经考虑过了,但想不出如何使用 SQL 对这些数据进行分组。有任何想法吗?谢谢!
因此,您想根据相同的日期查找序列。
这是一个技巧:如果你row_number()
在整个组和row_number()
分区之间取差异code
,那么对于具有相同代码的相邻行,它将是恒定的。剩下的只是聚合:
select min(date), max(date), code
from (select t.*,
(row_number() over (order by date) -
row_number() over (partition by code order by date)
) as grpid
from followingdata t
) t
group by grpid, code;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5757 次 |
最近记录: |