SQL を使用して実行中のカウンターのギャップを特定します
実行カウンター列のギャップを見つけることは、データ分析における一般的なタスクです。 SQL では、これを実現するいくつかの方法があり、さまざまな DBMS と互換性のある標準ソリューションが提供されています。
最初のギャップを見つける
目標は、カウンター列から欠落している最小の正の整数を特定することです。たとえば、[1、2、4、5] の場合、ギャップは 3 です。
MySQL、PostgreSQL
<code class="language-sql">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</code>
SQL サーバー
<code class="language-sql">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</code>
オラクル
<code class="language-sql">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</code>
ANSI (最も一般的)
<code class="language-sql">SELECT MIN(id) + 1 FROM mytable mo WHERE NOT EXISTS ( SELECT NULL FROM mytable mi WHERE mi.id = mo.id + 1 )</code>
スライディング ウィンドウ機能 (サポートされている場合)
<code class="language-sql">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的以上注释</code>
以上がSQL を使用して実行中のカウンタ列の最初のギャップを見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。