Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Destinasi Terkini untuk Setiap Kereta Api Menggunakan SQL?

Bagaimana untuk Mencari Destinasi Terkini untuk Setiap Kereta Api Menggunakan SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-22 07:31:08661semak imbas

How to Find the Latest Destination for Each Train Using SQL?

Gunakan klausa MAX(DATE) dan GROUP BY untuk mencari destinasi terkini

Matlamat pertanyaan SQL ini adalah untuk mendapatkan semula destinasi terkini setiap kereta api, tertakluk pada masa berlepas maksimum. Walau bagaimanapun, apabila mengecualikan lajur 'Dest' daripada klausa GROUP BY, saya menghadapi ralat "ora-00979 bukan ungkapan GROUP BY", yang nampaknya berlawanan dengan intuitif.

Untuk menyelesaikan masalah ini, kami boleh menggunakan fungsi tetingkap RANK() untuk menetapkan kedudukan kepada setiap destinasi dalam setiap kumpulan kereta api. Khususnya, destinasi kedudukan tertinggi akan sepadan dengan masa berlepas terkini.

Pertanyaan SQL berikut menunjukkan pendekatan ini:

<code class="language-sql">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</code>

Pertanyaan berfungsi seperti berikut:

  1. Subkueri dalaman mencipta set hasil perantaraan yang merangkumi kereta api, destinasi, masa berlepas dan kedudukan setiap destinasi dalam setiap kumpulan kereta api. Fungsi RANK() menetapkan kedudukan dalam susunan menurun masa berlepas, dengan kedudukan tertinggi (1) menunjukkan masa berlepas terkini.
  2. Pertanyaan luaran memilih rekod dengan kedudukan destinasi sama dengan 1. Ini dengan berkesan menapis semua kecuali baris yang mewakili setiap destinasi terbaharu kereta api.
  3. Keputusan akhir menunjukkan kereta api, destinasi terkini dan masa berlepas yang sepadan untuk setiap kereta api.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Destinasi Terkini untuk Setiap Kereta Api Menggunakan 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