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

Scal ciągłe wiersze z Postgresql

Oto jedna metoda rozwiązania tego problemu. Utwórz flagę, która określa, czy jeden rekord nie pokrywają się z poprzednim. To jest początek grupy. Następnie weź skumulowaną sumę tej flagi i użyj jej do grupowania:

select user_id, min(begin_at) as begin_at, max(end_at) as end_at
from (select s.*, sum(startflag) over (partition by user_id order by begin_at) as grp
      from (select s.*,
                   (case when lag(end_at) over (partition by user_id order by begin_at) >= begin_at
                         then 0 else 1
                    end) as startflag
            from slots s
           ) s
     ) s
group by user_id, grp;

Tutaj to skrzypce SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj wszystkie klucze obce za pomocą JDBC

  2. Jak INTERSECT działa w PostgreSQL

  3. Railsy:Błąd podczas instalacji pg gem

  4. PostgreSQL:Ostrzeżenie:strona kodowa konsoli (437) różni się od strony kodowej Windows (1252)

  5. Polecenie SQL do zatrzymania zadania w pgAdmin 4