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.