Phi*_*ord 0 postgresql aggregate date
我想比较结果集中的日期
例子:
SELECT * FROM tbl WHERE foo=bar
Run Code Online (Sandbox Code Playgroud)
输出
id, datetime, name
1, 2014-01-01 18:13:45, test 1
2, 2014-01-01 19:01:32, test 2
3, 2014-01-01 20:34:44, test 3
4, 2014-01-03 04:45:22, test 4
Run Code Online (Sandbox Code Playgroud)
我希望能够区分每条记录之间的时间差异是小于还是大于前一条记录的 24 小时。
例子:
1, 2014-01-01 18:13:45, test 1 <-- first record since the previous record
2, 2014-01-01 19:01:32, test 2 <-- second record was less than 24 hours since the previous record
3, 2014-01-01 20:34:44, test 3 <-- third record was less than 24 hours since the previous record
4, 2014-01-03 04:45:22, test 4 <-- fourth record was more than 24 hours since the previous record
Run Code Online (Sandbox Code Playgroud)
想法?
正如@ypercube 所说,lag()会有所帮助。
select id,
(d - lag) as lag,
case when (d - lag) < interval '24 hours' then false else true end as p
from (
select id,
(datetime) as d,
lag(datetime) over (order by id) as lag
from lagtest
) as t;
Run Code Online (Sandbox Code Playgroud)
对于第一行,不会显示延迟。
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |