PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL-Gruppierung nach Datumsbereich

Sie möchten also Sequenzen nach Datum finden, die gleich sind.

Hier ist ein Trick:Wenn Sie den Unterschied zwischen row_number() nehmen über die gesamte Gruppe und row_number() partitioniert nach code , dann ist es für benachbarte Zeilen mit demselben Code konstant. Der Rest ist nur Aggregation:

select  min(date), max(date), code
from (select t.*,
             (row_number() over (order by date) -
              row_number() over (partition by code order by date)
             ) as grpid
      from followingdata t
     ) t
group by grpid, code;