如何在PostgreSQL的序列中找到差距?

时间:2019-02-20 15:31:21

标签: sql postgresql

我有一个带有ID和number_col的项目表。关于寻找ID差距的Stackoverflow上有很多问题,但是我要寻找的是数量上的差距。例如,如果我有3个项目:

id | number_col
===============
1  | 1
1  | 2
1  | 4

我需要一个SQL查询,该查询返回id = 1,number_col = 3为丢失。查询应查看每个id的number_col最大值。由于在我的示例中4是ID 1的最大number_col值,因此它不应返回1,5丢失。

1 个答案:

答案 0 :(得分:0)

如果您需要缺少值的范围,则:

select number_col + 1 as first_missing, (next_nc - 1) as last_missing
from (select t.*, lead(number_col) over (partition by id order by number_col) as next_nc
      from t
     ) t
where next_nc <> number_col + 1