2016-04-20 3 views
0

Wenn ich einige Daten wie so:Oracle Analytics Fensterfunktion

MyDate LEVEL 
01JAN2016 5.1 
02JAN2016 6.2 
03JAN2016 8.0 
04JAN2016 5.8 

Wie kann ich eine Windowing-Funktion verwenden, das Datum mit dem höchsten Niveau zurückzukehren? Ich dachte:

SELECT max (MyDate) über (ORDER BY LEVEL) FROM x

... aber es scheint nicht zu funktionieren. Ich habe versucht, PARTITION BY zu verwenden, aber immer noch kein Glück. Ich möchte wirklich max (LEVEL).

Antwort

1
select mydate, level 
from (select mydate, level, row_number() over (order by level desc) rn from x) 
where rn = 1 
1

Wenn Sie wirklich ausgefallene Funktionen verwenden möchten. . .

select max(date) keep (dense_rank first order by level desc) 
from x; 

Allerdings würden viele Leute schreiben:

select x.* 
from (select x.* 
     from x 
     order by level desc 
    ) x 
where rownum = 1; 
+0

lol - gute Vermutung! :-) Und ich habe bearbeitet, um "desc" hinzuzufügen, nachdem ich deinen Beitrag gesehen habe - ich habe es in der ersten Lesung in der Frage verpasst. – mathguy