Heim > Datenbank > MySQL-Tutorial > Wie kann man mit maximalen Spaltenwerten innerhalb von Gruppen in Oracle SQL verknüpfte Werte effizient abrufen?

Wie kann man mit maximalen Spaltenwerten innerhalb von Gruppen in Oracle SQL verknüpfte Werte effizient abrufen?

Linda Hamilton
Freigeben: 2025-01-17 19:21:37
Original
614 Leute haben es durchsucht

How to Efficiently Retrieve Values Associated with Maximum Column Values Within Groups in Oracle SQL?

Oracle SQL: Extrahieren von Werten, die mit maximalen Spaltenwerten innerhalb von Gruppen verknüpft sind

Eine häufige Datenbankaufgabe besteht darin, Werte auszuwählen, die dem Maximalwert einer Spalte zugeordnet sind, insbesondere beim Umgang mit gruppierten Daten. Betrachten wir eine Tabelle mit den Spalten KEY, NUM und VAL:

KEY NUM VAL
A 1 AB
B 1 CD
B 2 EF
C 2 GH
C 3 HI
D 1 JK
D 3 LM

Das Ziel besteht darin, das Maximum NUM für jedes KEY und das entsprechende VAL zu finden. Die gewünschte Ausgabe:

KEY VAL
A AB
B EF
C HI
D LM

Eine Methode verwendet eine Unterabfrage:

<code class="language-sql">select KEY, VAL
from TABLE_NAME TN
where NUM = (
    select max(NUM)
    from TABLE_NAME TMP
    where TMP.KEY = TN.KEY
    );</code>
Nach dem Login kopieren

Ein effizienterer und lesbarerer Ansatz verwendet jedoch die Funktion ROW_NUMBER():

<code class="language-sql">select key, val
from (select t.*, row_number() over (partition by key order by num desc) as seqnum
      from table_name t
     ) t
where seqnum = 1;</code>
Nach dem Login kopieren

Dadurch wird innerhalb jeder KEY-Gruppe eine Rangfolge basierend auf absteigenden NUM-Werten zugewiesen. Die WHERE-Klausel filtert dann nach dem obersten Rang (seqnum = 1) und liefert das gewünschte Ergebnis:

KEY VAL
A AB
B EF
C HI
D LM

Während beide Methoden das gleiche Ergebnis erzielen, bietet der ROW_NUMBER()-Ansatz im Allgemeinen eine bessere Leistung und Klarheit, insbesondere bei größeren Datensätzen. Die optimale Wahl hängt von den spezifischen Bedürfnissen und Vorlieben ab, ROW_NUMBER() bietet jedoch eine robuste und elegante Lösung für dieses häufige SQL-Problem.

Das obige ist der detaillierte Inhalt vonWie kann man mit maximalen Spaltenwerten innerhalb von Gruppen in Oracle SQL verknüpfte Werte effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage