sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL:RANGO ENTRE EL INTERVALO '10 DÍAS' Y LA FILA ACTUAL

Podría usar ROW_NUMBER() para extraer el registro más reciente dentro de los últimos 10 días para cada elemento:

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

En la subconsulta, la cláusula WHERE realiza el filtrado en el intervalo de fechas; ROW_NUMBER() asigna un rango a cada registro dentro de grupos de registros que tienen el mismo item_id, con el registro más reciente primero. Luego, la consulta externa solo filtra los registros que tienen el número de fila 1.