sql >> Databáze >  >> RDS >> Oracle

SQL – Najděte chybějící hodnoty int v většinou uspořádaných sekvenčních řadách

Byl jsem tam.

FOR ORACLE:

Považuji to za mimořádně užitečné dotaz na netu před chvílí a poznamenejte si, ale teď si web nepamatuji, můžete hledat "GAP ANALYSIS" na Googlu.

SELECT   CASE
             WHEN ids + 1 = lead_no - 1 THEN TO_CHAR (ids +1)
          ELSE TO_CHAR (ids + 1) || '-' || TO_CHAR (lead_no - 1)
         END
             Missing_track_no
   FROM   (SELECT   ids,
                    LEAD (ids, 1, NULL)
                     OVER (ORDER BY ids ASC)
                        lead_no
             FROM   YOURTABLE
             )
   WHERE   lead_no != ids + 1

Výsledek je:

MISSING _TRACK_NO
-----------------
       6

Pokud by tam bylo více mezer, řekněme 2,6,7,9, pak by to bylo:

MISSING _TRACK_NO
-----------------
        2
       6-7
        9


  1. Co je technologie Java JPA?

  2. Základní monitorování PostgreSQL – část 3

  3. Používání dat chráněných pomocí Azure Key Vault z Linuxu

  4. Zjistěte, zda hodnota obsahuje alespoň jednu číselnou číslici v PostgreSQL