Heim > Datenbank > MySQL-Tutorial > Wie rufe ich die neueste Menge für jede ID in Oracle SQL ab?

Wie rufe ich die neueste Menge für jede ID in Oracle SQL ab?

Patricia Arquette
Freigeben: 2025-01-21 15:26:12
Original
823 Leute haben es durchsucht

How to Retrieve the Latest Quantity for Each ID in Oracle SQL?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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