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

PostgreSQL:THAY ĐỔI GIỮA INTERVAL '10 NGÀY' VÀ ROW HIỆN TẠI

Bạn có thể sử dụng ROW_NUMBER () để lấy ra bản ghi gần đây nhất trong vòng 10 ngày qua cho từng mục:

SELECT * 
FROM (
    SELECT
        DATE(datetime),
        item_id,
        price AS most_recent_price_within_last_10days,
        ROW_NUMBER() OVER(PARTITION BY item_id ORDER BY datetime DESC) rn
    FROM ...
    WHERE datetime > NOW() - INTERVAL '10 DAY'
) x WHERE rn = 1

Trong truy vấn con, mệnh đề WHERE thực hiện lọc phạm vi ngày; ROW_NUMBER () chỉ định thứ hạng cho từng bản ghi trong các nhóm bản ghi có cùng item_id, với bản ghi gần đây nhất trước tiên. Sau đó, truy vấn bên ngoài chỉ lọc các bản ghi có hàng số 1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres tìm tệp cấu hình trong linux

  2. Tạo json lồng nhau từ truy vấn sql postgres 9.4

  3. chọn từ ... - dựa trên giá trị ở định dạng JSON

  4. Định dạng giá trị chính xác kép trong Postgresql

  5. Nhiều lệnh gọi array_agg () trong một truy vấn