1. ホーム
  2. sql

[解決済み] SQLで列の値の出現回数を効率的に数えるには?

2022-02-10 16:09:45

質問内容

生徒の表があります。

id | age
--------
0  | 25
1  | 25
2  | 23

すべての生徒についてクエリを実行し、さらに、同じ年齢の生徒が何人いるかをカウントする列を追加したいのです。

id | age | count
----------------
0  | 25  | 2
1  | 25  | 2
2  | 23  | 1

最も効率的な方法は何でしょうか? サブクエリでは遅くなるのではと心配で、もっと良い方法はないかと考えています . あるんですか?

解決方法は?

これでうまくいくはずです。

SELECT age, count(age) 
  FROM Students 
 GROUP by age

もし、idも必要であれば、上記をサブクエリとして以下のように記述します。

SELECT S.id, S.age, C.cnt
  FROM Students  S
       INNER JOIN (SELECT age, count(age) as cnt
                     FROM Students 
                    GROUP BY age) C ON S.age = C.age