Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Terkini untuk Setiap Kumpulan Berdasarkan Cap Masa dalam Oracle SQL?

Bagaimana untuk Mendapatkan Nilai Terkini untuk Setiap Kumpulan Berdasarkan Cap Masa dalam Oracle SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-21 15:47:10266semak imbas

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

Mengekstrak Entri Terkini untuk Setiap Kumpulan dalam Oracle SQL

Tutorial ini menunjukkan tugas pangkalan data biasa: mendapatkan semula rekod terkini untuk setiap kumpulan berdasarkan cap masa. Kami akan menggunakan jadual yang mengandungi ID, cap masa dan kuantiti sebagai contoh.

Cabaran:

Memandangkan jadual dengan lajur ID, cap masa ("tarikh") dan kuantiti ("kuantiti"), bagaimanakah kita boleh memilih kuantiti terkini (dan cap masa yang berkaitan) dengan cekap untuk setiap ID unik?

Penyelesaian:

Ini boleh dicapai menggunakan pendekatan berikut:

  1. Kedudukan mengikut Cap Masa: Tetapkan pangkat pada setiap baris dalam setiap kumpulan ID, disusun mengikut cap masa dalam tertib menurun.
  2. Memilih Kedudukan Teratas: Tapis keputusan untuk memasukkan hanya baris dengan kedudukan tertinggi bagi setiap ID. Baris ini mewakili entri terkini.

Pertanyaan Oracle SQL berikut melaksanakan penyelesaian ini:

<code class="language-sql">SELECT x.id, x."date", x.quantity
FROM (
    SELECT
        id,
        "date",
        RANK() OVER (PARTITION BY id ORDER BY "date" DESC) AS rnk,
        quantity
    FROM qtys
) x
WHERE x.rnk = 1;</code>

Melanjutkan Pertanyaan:

Pertanyaan asas ini boleh disesuaikan untuk memenuhi keperluan yang lebih kompleks:

  • Penapisan Berasaskan Masa: Tambahkan klausa WHERE pada pertanyaan dalaman untuk mengehadkan hasil pada tempoh masa tertentu.
  • Menyertai dengan Jadual Lain: Sepadukan data daripada jadual tambahan dengan menyertai pada lajur id. Sebagai contoh, anda boleh menyertai jadual yang mengandungi ID dan nama untuk memasukkan nama dalam output.

Kaedah ini menyediakan cara yang mantap dan cekap untuk mendapatkan semula nilai terkini bagi setiap kumpulan berdasarkan cap masa dalam Oracle SQL, yang boleh digunakan untuk pelbagai tugasan analisis dan manipulasi data.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Terkini untuk Setiap Kumpulan Berdasarkan Cap Masa dalam Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn