ホームページ > データベース > mysql チュートリアル > SQL を使用して各列車の最新の目的地を見つけるにはどうすればよいですか?

SQL を使用して各列車の最新の目的地を見つけるにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-22 07:31:08
オリジナル
657 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート