PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Fungsi jendela SQL dengan klausa where?

Baru saja mencoba pendekatan Gordon menggunakan PostgreSQL 9.5.4, dan ia mengeluh bahwa

yang berarti menggunakan lag() dengan FILTER tidak diizinkan. Jadi saya memodifikasi kueri Gordon menggunakan max() , bingkai jendela yang berbeda, dan 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';

Diverifikasi bahwa ini berfungsi dengan PostgreSQL 9.5.4.

Terima kasih kepada Gordon untuk FILTER trik!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nonaktifkan pemeriksaan kunci asing PostgreSQL untuk migrasi

  2. UPPER() – Konversikan ke Huruf Besar di PostgreSQL

  3. Memulai Postgres SQL 9.6 Server di Amazon Linux mengembalikan layanan yang tidak dikenal

  4. Bagaimana saya bisa meninjau semua database dan hibah objek untuk suatu peran?

  5. Cara memulai ulang Postgresql