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

Funkcja okna SQL z klauzulą ​​where?

Właśnie wypróbowałem podejście Gordona przy użyciu PostgreSQL 9.5.4 i narzekał, że

co oznacza użycie lag() z FILTER nie jest dozwolone. Więc zmodyfikowałem zapytanie Gordona za pomocą max() , inna rama okienna i CTE:

WITH subq AS (
  SELECT
    "user", event, time as event_b_time,
    max(time) FILTER (WHERE event = 'A') OVER (
      PARTITION BY "user"
      ORDER BY time
      ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
    ) AS last_event_a_time
  FROM events
  ORDER BY time
)
SELECT
  "user", event_b_time, last_event_a_time
FROM subq
WHERE event = 'B';

Zweryfikowano, że działa to z PostgreSQL 9.5.4.

Podziękowania dla Gordona za FILTER sztuczka!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klauzula SQL Between z kolumnami stringów

  2. instalacja postgres inicjalizacja klastra bazy danych nie powiodła się ( Postgresql wersja 9.4.4 )

  3. Programista Oracle SQL i PostgreSQL

  4. Prawidłowe polecenie COPY do załadowania danych postgreSQL z pliku csv, który zawiera dane w pojedynczym cudzysłowie?

  5. Jak rozwiązać problem FATAL:przekroczono limit połączeń dla użytkowników niebędących superużytkownikami