ORDER BY句はグループ関数を使ってソートができます。
グループ関数で集計した結果を並び替えたい場合に便利です。
ORDER BY句でグループ関数を使う
サンプルデータ
SELECT
CLASS
, NAME
FROM
TB_SAMPLE
;
CLASS NAME
------------ ------------
3年1組 山田 太郎
3年2組 田中 太郎
3年2組 田中 二郎
3年3組 鈴木 太郎
3年3組 鈴木 二郎
3年3組 鈴木 三郎
サンプルSQL
下記のSQLはクラス毎で人数が多い順で結果を表示できます。
SELECT
CLASS
, COUNT(*)
FROM
TB_SAMPLE
GROUP BY
CLASS
ORDER BY
COUNT(*) DESC
;
CLASS COUNT(*)
------------ ----------
3年3組 3
3年2組 2
3年1組 1
サンプルデータ
SELECT
CLASS
, NAME
, SCORE
FROM
TB_SAMPLE
;
CLASS NAME SCORE
------------ ------------ ----------
3年1組 山田 太郎 50
3年2組 田中 太郎 100
3年2組 田中 二郎 90
3年3組 鈴木 太郎 70
3年3組 鈴木 二郎 80
3年3組 鈴木 三郎 90
サンプルSQL
下記のSQLはクラス毎で平均点が高い順に結果を表示できます。
SELECT
CLASS
, AVG(SCORE)
FROM
TB_SAMPLE
GROUP BY
CLASS
ORDER BY
AVG(SCORE) DESC
;
CLASS AVG(SCORE)
------------ ----------
3年2組 95
3年3組 80
3年1組 50