PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL:ДИАПАЗОН МЕЖДУ ИНТЕРВАЛ '10 ДЕН' И ТЕКУЩИЯ РЕД

Можете да използвате ROW_NUMBER(), за да извлечете най-новия запис в рамките на последните 10 дни за всеки елемент:

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

В подзаявката клаузата WHERE извършва филтрирането на диапазона от дати; ROW_NUMBER() присвоява ранг на всеки запис в рамките на групи от записи, имащи един и същ item_id, като най-новият запис е първи. След това външната заявка просто филтрира записи с номер на ред 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. Връща записи, различни в една колона, но подредени по друга колона

  2. Заявката на SQLAlchemy показва грешка Не може да присъедини таблица/избираеми „работни потоци“ към себе си

  3. синтактична грешка при или близо до 'order' в PostgreSQL

  4. Добавяне на 'serial' към съществуваща колона в Postgres

  5. Извличане на данни от PostgreSQL DB без използване на pg_dump