5 Stimmen

ID des Artikels mit dem höchsten Preis abrufen

Ich habe eine Tabelle mit Artikel-ID und Artikelpreis. Ich verwende Oracle. Ich möchte nur die ID('s) mit dem höchsten Preis erhalten.

Dies funktioniert mit MySQL, aber nicht mit Oracle (warum nicht?!?).

SELECT Main.itemid 
  FROM Main 
HAVING MAX(Main.itemprice)

Da ich dies in einer anderen verschachtelten Abfrage verwenden werde, muss ich die Funktion mit HAVING . Irgendwelche Ideen? Danke!

BTW, erzeugt diesen Fehler:

ORA-00920: invalid relational operator

4voto

Dies sollte Ihnen eine eindeutige Liste von itemid s wo itemprice ist maximal (in der gesamten Tabelle):

select itemid
from Main
where itemprice=(select max(itemprice) from Main)
group by itemid;

2voto

Erwin Brandstetter Punkte 530399

Bearbeiten: Mit rank() anstelle von row_number() sollte es nun das tun, was verlangt wurde:
Ruft auf. todos Artikel mit dem höchsten Preis.

SELECT itemid
  FROM (
   SELECT itemid
         ,rank() OVER (ORDER BY itemprice DESC) AS rn
     FROM Main)
 WHERE rn = 1;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X