SQL查询以查找列的行值之间的最小差异
Posted
技术标签:
【中文标题】SQL查询以查找列的行值之间的最小差异【英文标题】:SQL query to find minimum difference between row values of a column 【发布时间】:2020-09-17 23:20:48 【问题描述】:我正在尝试找出每个 ID 的最小年份差异。例如,
我有这些数据:
ID year
1 2001
1 2001
2 2003
2 2004
2 2010
3 2000
我想要这个输出:
ID year
1 0
2 1
3 0
【问题讨论】:
您尝试解决什么问题? 【参考方案1】:你可以使用lag()
:
select id, coalesce(min(year - prev_year), 0)
from (select t.*, lag(year) over (partition by id order by year) as prev_year
from t
) t
group by id;
Here 是一个 dbfiddle。
【讨论】:
【参考方案2】:您可以使用LEFT JOIN
SELECT Id,
ISNULL(MIN(Def), 0) [Year]
FROM
(
SELECT T.Id,
TT.Year - T.Year Def
FROM Data T
LEFT JOIN Data TT ON T.Id = TT.Id AND T.Year < TT.Year
) T
GROUP BY Id;
Online Demo
【讨论】:
以上是关于SQL查询以查找列的行值之间的最小差异的主要内容,如果未能解决你的问题,请参考以下文章