PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Hàm cửa sổ SQL với mệnh đề where?

Chỉ cần thử cách tiếp cận của Gordon bằng cách sử dụng PostgreSQL 9.5.4 và nó phàn nàn rằng

có nghĩa là sử dụng lag() với FILTER không được đồng ý. Vì vậy, tôi đã sửa đổi truy vấn của Gordon bằng cách sử dụng max() , một khung cửa sổ khác và 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';

Đã xác minh rằng điều này hoạt động với PostgreSQL 9.5.4.

Cảm ơn Gordon về FILTER lừa!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để quản lý các kết nối db trên máy chủ?

  2. Lỗi mã hóa với sqlalchemy và postgresql

  3. PostgreSQL 9.5 - cập nhật không hoạt động khi hợp nhất NULL với JSON

  4. Cách đặt múi giờ trên kết nối postgresql jdbc do flyway tạo?

  5. Cách lấy thời gian hiện tại trong PostgreSQL