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

Najděte maximální počet po sobě jdoucích let pro každé ID v tabulce (Oracle SQL)

Tím získáte požadovaný výsledek:

select
  id,
  ayear,
  byear,
  yeardiff
from
(
  select
    a.id,
    a.year ayear,
    b.year byear,
    (b.year - a.year)+1 yeardiff,
    dense_rank() over (partition by a.id order by (b.year - a.year) desc) rank
  from
    years a
    join years b on a.id = b.id 
        and b.year > a.year
  where
    b.year - a.year = 
      (select count(*)-1
         from years a1
        where a.id = a1.id
             and a1.year between a.year and b.year)
)
where
  rank = 1

UPRAVIT aktualizováno tak, aby zobrazoval rok začátku/konce nejdelšího úseku.

SQLFiddle



  1. mysqli or die, musí to zemřít?

  2. Jak seskupit podle roku v T-SQL

  3. Spuštění databáze RAC se nezdaří s chybou ORA-12547

  4. PHP – Zabezpečte stránky pouze pro členy pomocí přihlašovacího systému