Heim > Datenbank > MySQL-Tutorial > Wie kann ich den neuesten Wert für jede Gruppe basierend auf dem Zeitstempel in Oracle abrufen?

Wie kann ich den neuesten Wert für jede Gruppe basierend auf dem Zeitstempel in Oracle abrufen?

Susan Sarandon
Freigeben: 2025-01-21 15:36:10
Original
888 Leute haben es durchsucht

How to Retrieve the Latest Value for Each Group Based on Timestamp in Oracle?

Rufen Sie den neuesten Wert jeder Gruppe basierend auf der Zeit ab

Frage:

Betrachten Sie die folgende Oracle-Tabelle:

<code>id     date              quantity
1      2010-01-04 11:00  152
2      2010-01-04 11:00  210
1      2010-01-04 10:45  132
2      2010-01-04 10:45  318
4      2010-01-04 10:45  122
1      2010-01-04 10:30  1
3      2010-01-04 10:30  214
2      2010-01-04 10:30  5515
4      2010-01-04 10:30  210</code>
Nach dem Login kopieren

Das Ziel besteht darin, den neuesten Wert (und seinen Zeitstempel) nach ID-Gruppe abzurufen. Die erwartete Ausgabe sollte sein:

<code>id     date              quantity
1      2010-01-04 11:00  152
2      2010-01-04 11:00  210
3      2010-01-04 10:30  214
4      2010-01-04 10:45  122</code>
Nach dem Login kopieren

Lösung:

Erstellen Sie dazu eine Inline-Ansicht, die jede Zeile in der ID-Gruppe basierend auf dem absteigenden Zeitstempel einordnet:

<code class="language-sql">SELECT RANK() OVER (PARTITION BY id ORDER BY ts DESC) AS rnk,
       id, ts, qty
FROM qtys</code>
Nach dem Login kopieren

Dann filtern Sie den Datensatz nach Rang 1, um den neuesten Wert zu erhalten:

<code class="language-sql">SELECT x.id, x.ts AS "DATE", x.qty AS "QUANTITY"
FROM (SELECT * FROM qtys) x
WHERE x.rnk = 1</code>
Nach dem Login kopieren

Erweiterte Optionen:

  • Nach Zeit filtern: Um nur Werte innerhalb der letzten XX Minuten abzurufen, fügen Sie der WHERE-Klausel die folgende Bedingung hinzu:
<code class="language-sql">WHERE x.ts >= sysdate - INTERVAL 'XX' MINUTE</code>
Nach dem Login kopieren
  • ID mit Daten aus einer anderen Tabelle verbinden: Wenn die Spalte „idname“ in einer anderen Tabelle vorhanden ist, verknüpfen Sie diese Tabellen, um die Werte zu verbinden:
<code class="language-sql">SELECT x.id || '-' || y.idname AS "ID",
       x.ts AS "DATE", x.qty AS "QUANTITY"
FROM (SELECT * FROM qtys) x
LEFT JOIN another_table y ON x.id = y.id</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich den neuesten Wert für jede Gruppe basierend auf dem Zeitstempel in Oracle 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