PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL:ZAKRES MIĘDZY INTERWAŁEM '10 DNI' A BIEŻĄCYM WIERSZEM

Możesz użyć ROW_NUMBER(), aby pobrać najnowszy rekord z ostatnich 10 dni dla każdego elementu:

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

W podzapytaniu klauzula WHERE wykonuje filtrowanie według zakresu dat; ROW_NUMBER() przypisuje rangę każdemu rekordowi w grupach rekordów o tym samym identyfikatorze elementu, zaczynając od najnowszego rekordu. Następnie zewnętrzne zapytanie po prostu filtruje rekordy o numerze wiersza 1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja Postgresql z instrukcją if

  2. W jaki sposób Postgresql COPY TO STDIN with CSV wykonuje aktualizację w przypadku konfliktu?

  3. Rama encji PostgreSQL

  4. Rekurencyjny warunek zatrzymania CTE dla pętli

  5. Uwagi dotyczące indeksów PostgreSQL B-Tree