Sql 计算组内最小值的差值
鉴于下表:Sql 计算组内最小值的差值,sql,postgresql,group-by,aggregate,Sql,Postgresql,Group By,Aggregate,鉴于下表: | id| Date | | 1 | 04-01-2016 | | 1 | 04-07-2016 | | 1 | 04-09-2016 | | 2 | 04-06-2016 | | 2 | 04-03-2016 | | 2 | 04-10-2016 | 我希望在id分组中有一列显示每天与最短天数之间的天数 id | date | day_count ---+------------+------------ 1 | 04-01-2016
| id| Date |
| 1 | 04-01-2016 |
| 1 | 04-07-2016 |
| 1 | 04-09-2016 |
| 2 | 04-06-2016 |
| 2 | 04-03-2016 |
| 2 | 04-10-2016 |
我希望在id分组中有一列显示每天与最短天数之间的天数
id | date | day_count
---+------------+------------
1 | 04-01-2016 | 0 (days between 04-01-2016 and 04-01-2016)
1 | 04-04-2016 | 3 (days between 04-04-2016 and 04-01-2016)
1 | 04-08-2016 | 7
2 | 04-17-2016 | 14 (days between 04-017-2016 and 04-03-2016)
2 | 04-03-2016 | 0
2 | 04-10-2016 | 7
通过使用窗口函数和Datediff,我们可以得到以下结果
DECLARE @Table1 TABLE
(id int, date datetime)
;
INSERT INTO @Table1
(id, date)
VALUES
(1, '2016-04-01 05:30:00'),
(1, '2016-04-04 05:30:00'),
(1, '2016-04-08 05:30:00'),
(2, '2016-04-03 05:30:00'),
(2, '2016-04-17 05:30:00'),
(2, '2016-04-20 05:30:00')
;
剧本
select *
, datediff(day, min(Date) over (partition by [ID]), Date)Cnt
from @Table1
太感谢你了!在stackoverflow中,如何将上表格式化为可读格式?在编辑框中,我们有{}代码格式选项,只需选择所需格式并单击that@labrynth我认为现在你们有资格打勾并投票answers@labrynth如果答案有助于解决您的问题,请保留它,因为勾号表示有效答案(右标记)