sql >> Database >  >> RDS >> Sqlserver

Vind min en max voor subsets van opeenvolgende rijen - hiaten en eilanden

U wilt opeenvolgende groepen van vergelijkbare rijen vinden en vervolgens aggregatie. Ik hou van het verschil in rijnummers:

select name, act, min(startt) as startt, max(endd) as endd
from (select i.*,
             row_number() over (partition by name, act order by rn) as seqnum_na,
             row_number() over (partition by name order by rn) as seqnum_n
      from input i
     ) i
group by (seqnum_n - seqnum_na), name, act;

U kunt zien hoe dit werkt door te kijken naar wat de subquery doet.



  1. PHP - Gegevens formatteren voor in_array

  2. Panda's 0.20.2 to_sql() met MySQL

  3. Maak een index op een enorme MySQL-productietafel zonder tafelvergrendeling

  4. Haal woordfrequenties op uit SQL Server Full Text Search