sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL:BEREIK TUSSEN INTERVAL '10 DAGEN' EN HUIDIGE RIJ

U kunt ROW_NUMBER() gebruiken om de meest recente record van de afgelopen 10 dagen voor elk item op te halen:

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

In de subquery doet de WHERE-component het filteren op het datumbereik; ROW_NUMBER() wijst een rang toe aan elke record binnen groepen records met dezelfde item_id, met de meest recente record eerst. Vervolgens filtert de buitenste query alleen records met rijnummer 1.



  1. MySQL Query om items op te halen, maar altijd een bepaalde bovenaan te tonen

  2. MySQL - universele manier om ca. rijgrootte in bytes

  3. Sql selecteer de elementen die overeenkomen met de array en toon ze op een rij

  4. php + vul het vervolgkeuzemenu in bij de selectie van een ander