PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL:INTERVALO ENTRE O INTERVAL '10 DAY' E A LINHA ATUAL


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.