Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Destinasi Terkini untuk Setiap Kereta Api Menggunakan `GROUP BY` dan `MAX(DATE)` SQL?

Bagaimana untuk Mendapatkan Destinasi Terkini untuk Setiap Kereta Api Menggunakan `GROUP BY` dan `MAX(DATE)` SQL?

Mary-Kate Olsen
Lepaskan: 2025-01-22 07:37:11
asal
655 orang telah melayarinya

How to Get the Latest Destination for Each Train Using SQL's `GROUP BY` and `MAX(DATE)`?

Pertanyaan SQL menggunakan GROUP BY dan MAX(DATE) [Soalan pendua]

Soalan:

Dapatkan destinasi terkini setiap kereta api berdasarkan masa berlepas maksimumnya dari jadual yang diberikan. Output yang dikehendaki harus mengecualikan destinasi pendua sambil mengekalkan masa terkini.

Data sampel:

<code>火车    目的地      时间
1        HK        10:00
1        SH        12:00
1        SZ        14:00
2        HK        13:00
2        SH        09:00
2        SZ        07:00</code>
Salin selepas log masuk

Keputusan yang dijangkakan:

<code>火车    目的地      时间
1        SZ        14:00
2        HK        13:00</code>
Salin selepas log masuk

Percubaan awal:

Gunakan pertanyaan GROUP BY mudah dan MAX(Time):

SELECT Train, Dest, MAX(Time)
FROM TrainTable
GROUP BY Train
Salin selepas log masuk

Ralat:

Pertanyaan ini menghasilkan ralat "ora-00979 bukan ungkapan GROUP BY" yang menunjukkan bahawa lajur Dest juga mesti disertakan dalam pernyataan GROUP BY. Walau bagaimanapun, ini akan menghasilkan destinasi pendua untuk setiap kereta api.

Penyelesaian:

Untuk mencapai hasil yang diinginkan, pertanyaan yang lebih kompleks boleh digunakan:

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 mula-mula menggunakan fungsi RANK untuk mengira kedudukan setiap kereta api bagi setiap destinasi dalam susunan menurun masa berlepas. Klausa PARTITION BY train memastikan kedudukan dilakukan dalam setiap kumpulan kereta api. Akhir sekali, pertanyaan hanya mendapatkan semula rekod yang dest_rank bersamaan dengan 1, menapis destinasi pendua dengan berkesan dan hanya mengekalkan destinasi terkini untuk setiap kereta api.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Destinasi Terkini untuk Setiap Kereta Api Menggunakan `GROUP BY` dan `MAX(DATE)` SQL?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan