PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:INTERVALLO TRA L'INTERVALLO "10 GIORNI" E LA RIGA ATTUALE

Puoi utilizzare ROW_NUMBER() per estrarre il record più recente negli ultimi 10 giorni per ciascun articolo:

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

Nella subquery, la clausola WHERE esegue il filtraggio sull'intervallo di date; ROW_NUMBER() assegna un rango a ciascun record all'interno di gruppi di record aventi lo stesso item_id, con il record più recente per primo. Quindi, la query esterna filtra solo i record con la riga numero 1.