sql >> Databasteknik >  >> RDS >> Sqlserver

Hitta min och max för delmängder av på varandra följande rader - luckor och öar

Du vill hitta på varandra följande grupper av liknande rader och sedan aggregering. Jag gillar skillnaden mellan radnummer:

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;

Du kan se hur detta fungerar genom att titta på vad underfrågan gör.



  1. Skapa en app för Django Movie Recommendation med Jaccard Index

  2. MySQL-fråga för att beräkna senaste genomsnittspriser med hjälp av data från flera tabeller

  3. MySQL:Hitta upprepade namn i min användartabell

  4. Bulk Infoga i Oracle-databas:Vilket är bättre:FÖR Cursor loop eller en enkel Select?