Beispieldaten aus meinem Tisch test_table
:Return Zeilen, die maximal eine Spalte in Postgresql sind
date symbol value created_time
2010-01-09 symbol1 101 3847474847
2010-01-10 symbol1 102 3847474847
2010-01-10 symbol1 102.5 3847475500
2010-01-10 symbol2 204 3847474847
2010-01-11 symbol1 109 3847474847
2010-01-12 symbol1 105 3847474847
2010-01-12 symbol2 206 3847474847
die Tabelle oben gegeben, Ich versuche, den optimalen Index zu finden auf dem Tisch (Datum, Symbol zu setzen,
date symbol value created_time
2010-01-09 symbol1 101 3847474847
2010-01-10 symbol1 102.5 3847475500
2010-01-10 symbol2 204 3847474847
2010-01-11 symbol1 109 3847474847
2010-01-12 symbol1 105 3847474847
2010-01-12 symbol2 206 3847474847
ich bin für jede Gruppe von denen drei mit der maximalen created_time für Datum, Symbol, Wert Datenspalte: Wert und created_time sollten eindeutig sein) und die Abfrage zu gehen zusammen zurückzukehren, um die folgende Kombination Spalte (im Wesentlichen Zeile 1, 3, 4, 5, 6, 7 in dem Beispiel abo zurückgekehrt sein).
Zur Zeit habe ich diesen Index versucht ...
CREATE UNIQUE INDEX "test_table_date_symbol_value_created_time"
ON "test_table" USING btree (date, symbol, value, created_time)
Und diese Abfrage verwenden. Nicht sicher, ob es der effektivste Weg ist, es scheint immer noch ziemlich langsam.
select *
from(
select date,
symbol,
value,
created_time,
max(created_time) over (partition by date, symbol) as max_created_time
from "test_table"
) t
where symbol in ('symbol1', 'symbol2') and created_time = max_created_time
So ist die gewünschte * neuesten * Zeile für jeden einzigartigen Datum, Symbol und Wertekombination ? – Bohemian
Ja genau, tut mir leid, ich bin ziemlich unerfahren mit SQL, also habe versucht, viel zu lesen und eine fundierte Vermutung zu nehmen, bevor Sie fragen. –
Sorry ich wollte die neueste Zeile für jedes Datum, Symbol Kombination sagen. –