Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Rekod Terkini untuk Setiap Kumpulan Menggunakan SQL GROUP BY dan MAX(DATE)?

Bagaimana untuk Mendapatkan Rekod Terkini untuk Setiap Kumpulan Menggunakan SQL GROUP BY dan MAX(DATE)?

Barbara Streisand
Lepaskan: 2025-01-22 07:22:08
asal
385 orang telah melayarinya

How to Retrieve the Latest Record for Each Group Using SQL's GROUP BY and MAX(DATE)?

Kumpulkan menggunakan GROUP BY dan MAX(DATE) [pendua]

Dalam SQL, anda mungkin menghadapi situasi di mana anda perlu mengekstrak rekod terkini berdasarkan lajur dan kumpulan tertentu mengikut lajur lain. Sebagai contoh, anda mungkin perlu menentukan destinasi terkini setiap kereta api dalam jadual.

Kumpulkan mengikut MAX(Masa)

Pada mulanya, anda cuba mencapai ini menggunakan pernyataan GROUP BY dan MAX(Time) yang mudah, tetapi ini mengakibatkan ralat. Ini kerana anda tidak boleh mengagregatkan lajur bukan kumpulan dalam pernyataan GROUP BY. Untuk menyelesaikan masalah ini, anda perlu memasukkan 'Dest' dalam kumpulan mengikut kenyataan. Walau bagaimanapun, ini tidak membuahkan hasil yang diharapkan.

Gunakan subquery dan fungsi RANK

Penyelesaian melibatkan penggunaan subqueries dan fungsi RANK(). Subkueri mencipta jadual perantaraan yang mengira kedudukan setiap destinasi berdasarkan masa berlepas. Fungsi RANK() memberikan kedudukan berdasarkan masa, dan untuk setiap kereta api, nilai maksimum (masa terkini) diberikan pangkat 1.

Pertanyaan akhir memilih kereta api, destinasi dan masa daripada subkueri dengan kedudukan_tujuan ialah 1. Ini memastikan bahawa hanya destinasi terkini setiap kereta api diambil.

Berikut ialah pertanyaan SQL yang dikemas kini:

SELECT train, dest, time
FROM (
  SELECT train, dest, time,
    RANK() OVER (PARTITION BY train ORDER BY time DESC) dest_rank
    FROM traintable
  )
where dest_rank = 1;
Salin selepas log masuk

Pertanyaan ini akan menghasilkan hasil yang diingini:

火车 目的地 时间
1 SZ 14:00
2 HK 13:00

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Terkini untuk Setiap Kumpulan Menggunakan SQL GROUP BY dan MAX(DATE)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan