sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL:OMRÅDE MELLAN INTERVAL '10 DAGAR' OCH AKTUELL RADD

Du kan använda ROW_NUMBER() för att ta fram den senaste posten under de senaste 10 dagarna för varje objekt:

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

I underfrågan filtrerar WHERE-satsen på datumintervallet; ROW_NUMBER() tilldelar en rangordning till varje post inom grupper av poster som har samma item_id, med den senaste posten först. Sedan filtrerar den yttre frågan bara i poster med rad nummer 1.



  1. org.postgresql.util.PSQLEUndantag:FEL:kolumnen user0_.id finns inte - Viloläge

  2. Fel 1215:Det går inte att lägga till begränsning av främmande nyckel

  3. Hur man gör genomsnittliga produktrecensioner med activerecord och POSTGRES

  4. Har T-SQL en aggregerad funktion för att sammanfoga strängar?