Oracle SQL: Extrahieren der neuesten Menge für jede ID
Diese Anleitung zeigt, wie Sie die aktuelle Menge für jede eindeutige ID in einer Oracle SQL-Datenbank effizient abrufen können. Nehmen wir an, Sie haben eine Tabelle namens „qtys“ mit der folgenden Struktur:
ID
: Eindeutige Kennung für jeden Datensatz.TS
: Zeitstempel, der angibt, wann die Menge erfasst wurde.QTY
: Der Mengenwert.Das Ziel besteht darin, die aktuellste Menge (QTY
) und den entsprechenden Zeitstempel (TS
) für jedes einzelne ID
zu erhalten.
Lösung:
Die folgende Abfrage verwendet die MAX()
-Funktion und die GROUP BY
-Klausel, um dies zu erreichen:
<code class="language-sql">SELECT id, MAX(TS) AS "Latest Timestamp", MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS) AS "Latest Quantity" FROM qtys GROUP BY id;</code>
Diese Abfrage gruppiert die Daten nach ID
und wählt dann für jede Gruppe den maximalen Zeitstempel (MAX(TS)
) aus. Entscheidend ist, dass MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS)
sicherstellt, dass die mit dem neuesten Zeitstempel verknüpfte Menge abgerufen wird, auch wenn mehrere Einträge denselben maximalen Zeitstempel haben.
Alternative Ansätze:
1. Filterung innerhalb der letzten X Minuten:
Um die Ergebnisse auf Einträge innerhalb der letzten X Minuten zu beschränken, fügen Sie eine WHERE
-Klausel ein:
<code class="language-sql">SELECT id, MAX(TS) AS "Latest Timestamp", MAX(QTY) KEEP (DENSE_RANK LAST ORDER BY TS) AS "Latest Quantity" FROM qtys WHERE TS > SYSTIMESTAMP - INTERVAL '30' MINUTE GROUP BY id;</code>
Ersetzen Sie '30' MINUTE
durch das gewünschte Zeitintervall.
2. Mit einem anderen Tisch verbinden:
Wenn Sie Daten aus einer anderen Tabelle einbinden müssen (z. B. „Namen“ mit einer Spalte idname
), verwenden Sie ein JOIN
:
<code class="language-sql">SELECT t1.id || '-' || t2.idname AS "ID-IDNAME", MAX(t1.TS) AS "Latest Timestamp", MAX(t1.QTY) KEEP (DENSE_RANK LAST ORDER BY t1.TS) AS "Latest Quantity" FROM qtys t1 JOIN names t2 ON t1.id = t2.id GROUP BY t1.id || '-' || t2.idname;</code>
Dadurch werden „qtys“ und „names“ basierend auf der Spalte id
verknüpft und ID
und idname
zu einer kombinierten Kennung verkettet. Die MAX()
-Funktionen bearbeiten dann die verknüpften Daten. Denken Sie daran, die Tabellen- und Spaltennamen an Ihr spezifisches Datenbankschema anzupassen.
Das obige ist der detaillierte Inhalt vonWie rufe ich die neueste Menge für jede ID in Oracle SQL ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!