使用SQL识别运行计数器中的缺口
在数据分析中,查找运行计数器列中的缺口是一项常见任务。在SQL中,可以使用几种方法来实现此目的,提供与各种DBMS兼容的标准解决方案。
查找第一个缺口
目标是从计数器列中识别出最小的缺失正整数。例如,给定[1, 2, 4, 5],缺口为3。
MySQL、PostgreSQL
SELECT id + 1 FROM mytable mo WHERE NOT EXISTS ( SELECT NULL FROM mytable mi WHERE mi.id = mo.id + 1 ) ORDER BY id LIMIT 1
SQL Server
SELECT TOP 1 id + 1 FROM mytable mo WHERE NOT EXISTS ( SELECT NULL FROM mytable mi WHERE mi.id = mo.id + 1 ) ORDER BY id
Oracle
SELECT * FROM ( SELECT id + 1 AS gap FROM mytable mo WHERE NOT EXISTS ( SELECT NULL FROM mytable mi WHERE mi.id = mo.id + 1 ) ORDER BY id ) WHERE rownum = 1
ANSI (最通用)
SELECT MIN(id) + 1 FROM mytable mo WHERE NOT EXISTS ( SELECT NULL FROM mytable mi WHERE mi.id = mo.id + 1 )
滑动窗口函数 (如果支持)
SELECT -- TOP 1 -- 解除SQL Server 2012+的以上注释 previd + 1 FROM ( SELECT id, LAG(id) OVER (ORDER BY id) previd FROM mytable ) q WHERE previd <> id - 1 ORDER BY id -- LIMIT 1 -- 解除PostgreSQL的以上注释
以上是如何使用 SQL 查找正在运行的计数器列中的第一个间隙?的详细内容。更多信息请关注PHP中文网其他相关文章!