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

Връща редове, които са максимум една колона в Postgresql

Postgres поддържа прозоречни функции които отговарят на тази ситуация:

select date, symbol, value, created_time
from (select *,
    rank() over (partition by date, symbol order by created_time desc) as rownum
  from test_table) x
where rownum = 1

За всяка комбинация от date , symbol , тази заявка връща value и created_time от реда с най-висок (т.е. последен ) created_time от тази date и symbol .

Бих предложил този индекс:

CREATE UNIQUE INDEX test_table_idx 
  ON test_table (date, symbol, created_time, value)

Това е покритие индекс (има всички стойности, от които се нуждаете за заявката, премахвайки необходимостта от достъп до действителната таблица и която вече сте имали), но имайте предвид, че created_time идва преди value , така че данните вече са в своя ред на дялове и value е най-маловажният атрибут, тъй като не участва в никакво определяне на това кой ред да се върне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Файл на сокет /var/pgsql_socket/.s.PGSQL.5432 липсва в Mountain Lion (OS X сървър)

  2. как да направя по-малко или равно на и по-голямо от равно във филтър django?

  3. релацията не е намерена с помощта на Postgres в приложение Eclipse Hibernate

  4. как да изпълня pgsql скрипт в pgAdmin?

  5. Как statement_timestamp() работи в PostgreSQL