PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Znajdź przerwy w sekwencji w SQL bez tworzenia dodatkowych tabel

Z nowoczesnym SQL , można to łatwo zrobić za pomocą funkcji okien :

select invoice_number + 1 as gap_start, 
       next_nr - 1 as gap_end
from (
  select invoice_number, 
         lead(invoice_number) over (order by invoice_number) as next_nr
  from invoices
) nr
where invoice_number + 1 <> next_nr;

SQLFiddle:http://sqlfiddle.com/#!15/1e807/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Filtruj według zakresu dat (ten sam miesiąc i dzień) w latach

  2. Śledź zewnętrzną bazę danych z Heroku

  3. Poświęć ostatnie 3 godziny i pogrupuj po 5 minut

  4. Jak znaleźć pierwsze darmowe godziny startu z rezerwacji w Postgres

  5. Nazwane parametry w funkcjach bazy danych z SQLAlchemy