Możesz użyć ROW_NUMBER(), aby pobrać najnowszy rekord z ostatnich 10 dni dla każdego elementu:
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
W podzapytaniu klauzula WHERE wykonuje filtrowanie według zakresu dat; ROW_NUMBER() przypisuje rangę każdemu rekordowi w grupach rekordów o tym samym identyfikatorze elementu, zaczynając od najnowszego rekordu. Następnie zewnętrzne zapytanie po prostu filtruje rekordy o numerze wiersza 1.