sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL:ROZSAH MEZI INTERVALEM „10 DEN“ A AKTUÁLNÍM ŘÁDKEM

Pomocí ROW_NUMBER() můžete pro každou položku vytáhnout nejnovější záznam za posledních 10 dní:

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

V poddotazu klauzule WHERE provádí filtrování v rozsahu dat; ROW_NUMBER() přiřadí pořadí každému záznamu ve skupinách záznamů se stejným item_id, přičemž nejnovější záznam je na prvním místě. Potom vnější dotaz pouze filtruje záznamy s číslem řádku 1.



  1. Euklidovská vzdálenost

  2. Determine Logic for MySQL Select - rezervační systém

  3. Oracle Style Joins v SQL Server

  4. Jak vytvořit zálohu jedné tabulky v databázi postgres?