Você pode usar ROW_NUMBER() para extrair o registro mais recente nos últimos 10 dias para cada item:
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
Na subconsulta, a cláusula WHERE faz a filtragem no intervalo de datas; ROW_NUMBER() atribui uma classificação a cada registro dentro de grupos de registros com o mesmo item_id, com o registro mais recente primeiro. Em seguida, a consulta externa apenas filtra os registros com o número da linha 1.