Heim > Datenbank > MySQL-Tutorial > Wie rufe ich mit Oracle SQL den maximalen VAL für jeden SCHLÜSSEL in gruppierten Daten ab?

Wie rufe ich mit Oracle SQL den maximalen VAL für jeden SCHLÜSSEL in gruppierten Daten ab?

Susan Sarandon
Freigeben: 2025-01-17 19:11:08
Original
351 Leute haben es durchsucht

How to Fetch the Maximal VAL for Each KEY in Grouped Data Using Oracle SQL?

Extrahieren des höchsten VAL für jeden SCHLÜSSEL in Oracle SQL

Diese Anleitung zeigt, wie Sie mithilfe von Oracle SQL effizient das Maximum VAL für jedes KEY in gruppierten Daten abrufen können. Sehen wir uns ein häufiges Szenario an:

Eine Tabelle mit dem Namen TABLE_NAME enthält die folgenden Daten:

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, eine Ergebnismenge zu generieren, die nur das Maximum VAL für jedes eindeutige KEY:

anzeigt
KEY VAL
A AB
B EF
C HI
D LM

Effiziente Oracle SQL-Lösung (10g und höher):

Während Unterabfragen dies erreichen können, verwendet eine elegantere und oft schnellere Lösung die ROW_NUMBER() Analysefunktion:

<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

Diese Abfrage weist zunächst jeder Zeile innerhalb jeder seqnum-Partition einen Rang (KEY) zu, sortiert nach NUM in absteigender Reihenfolge. Anschließend werden die Ergebnisse so gefiltert, dass nur Zeilen mit seqnum = 1 enthalten sind. Dabei wird effektiv die Zeile mit dem höchsten NUM (und damit implizit dem höchsten VAL) ausgewählt, wobei eine konsistente Beziehung zwischen NUM und VAL innerhalb jeder Zeile vorausgesetzt wird Schlüssel).

Wichtiger Hinweis: Diese Methode garantiert eine Zeile pro KEY. Wenn Sie potenzielle Bindungen in NUM anders behandeln müssen (z. B. mehrere Zeilen für ein KEY zurückgeben, wenn mehrere Zeilen das Maximum NUM teilen), sollten Sie RANK() oder DENSE_RANK() anstelle von ROW_NUMBER() verwenden.

Das obige ist der detaillierte Inhalt vonWie rufe ich mit Oracle SQL den maximalen VAL für jeden SCHLÜSSEL in gruppierten Daten ab?. 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