「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > SQLの各グループで最も年長の人を見つける方法は?

SQLの各グループで最も年長の人を見つける方法は?

2025-03-04に投稿されました
ブラウズ:716

How to Find the Oldest Person in Each Group in SQL?

グループ化されたSQLデータのトップランクのレコードを効率的に取得する

この例は、関係を解決するためのアルファベット順を考慮して、SQLテーブル内の各グループ内の最古の人を識別する方法を示しています。 テーブル構造には、「人」、「グループ」、「年齢」列が含まれます。

例テーブル:

グループ
ボブ 1 32
ジル 1 34
ショーン 1 42
jake 2 29
paul 2 36
laura 2 39

目的:各グループで最も古い人を見つけて、年齢が同一である場合はアルファベット順に優先順位を付けます。

sqlソリューション:

SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND (o.Age  b.Person))
WHERE b.Person IS NULL;
です

説明:

このクエリは、 left join を使用して、各人( o )を同じグループ( b )と比較します。 on 句は、列のフィルターであり、

  1. o.age o より若い o o は最古ではありません)。
  2. o.age = b.age and o.person> b.person o b と同じ年齢ですが、アルファベット順に(意味 o はアルファベットの順序ではありません)。
  3. ここで、B.Personがnull
clauseが

o で一致した行から任意の行を除去し、各グループに最古の人(または最初にネクタイがある場合はアルファベット順)のみを残します。 さらなる調査: 高度なSQL技術と潜在的な落とし穴をより包括的に理解するために、「SQL Antipatterns Volume 1:Databaseプログラミングの落とし穴を回避する」などのリソースを参照してください。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3