首頁 >資料庫 >mysql教程 >如何使用 SQL 找出每班列車的最新目的地?

如何使用 SQL 找出每班列車的最新目的地?

Linda Hamilton
Linda Hamilton原創
2025-01-22 07:31:08649瀏覽

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

使用MAX(DATE)和GROUP BY子句找出最新目的地

本SQL查詢的目標是檢索每列火車的最新目的地,以最大出發時間為準。然而,當從GROUP BY子句中排除'Dest'列時,遇到錯誤“ora-00979 not a GROUP BY expression”,似乎與直覺相悖。

為了解決這個問題,我們可以利用RANK()視窗函數為每列火車組內的每個目的地分配一個排名。具體來說,排名最高的目的地將對應於最新的出發時間。

以下SQL查詢示範了這個方法:

<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>

查詢工作原理如下:

  1. 內部子查詢建立一個中間結果集,其中包括火車、目的地、出發時間以及每列火車組內每個目的地的排名。 RANK()函數依出發時間的降序分配排名,最高排名(1)表示最新的出發時間。
  2. 外部查詢選擇目的地排名等於1的記錄。這有效地過濾掉了除代表每列火車最新目的地的行以外的所有行。
  3. 最終結果顯示每列火車的火車、最新目的地和相應的出發時間。

以上是如何使用 SQL 找出每班列車的最新目的地?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn