[ORACLE] jak wyciągnąć najnowższe wpisy

0

mam tabele zawierającą:

id, symbol, cena, data
np:
1 | A | 2,0 | 12-01-2009
2 | B | 1,8 | 12-01-2009
3 | A | 2,1 | 14-01-2009
4 | A | 2,5 | 25-01-2009
5 | D | 5,2 | 12-02-2009

Jak wyciągnąc najnowsze ceny (według daty) dla danego symbolu, tak żeby w wyniku zapytania było:
A | 2,5
B | 1,8
D | 5,2

?

0
SELECT t1.symbol, t1.cena FROM tab t1, (select symbol, Max(data) AS data from tab group by symbol) t2 WHERE t1.symbol = t2.symbol AND t1.data = t2.data ORDER BY symbol;
SELECT DISTINCT symbol, (SELECT Max(cena) FROM tab t2 WHERE t2.symbol = t1.symbol) FROM tab t1;
SELECT symbol, (SELECT Max(cena) FROM tab t2 WHERE t2.symbol = t1.symbol) FROM tab t1 GROUP BY symbol;

musisz sprawdzić, które będzie szybsze

0

I jeszcze jedna propozycja:

select t.id, t.cena from (select id,cena, row_number() over (partition by symbol order data desc) r from tabelka) t where t.r=1;

pzdr

1 użytkowników online, w tym zalogowanych: 0, gości: 1