概要
カラム内を特定カテゴリーを使って、別のカラムのランキングを作る。
事前登録データ
| 生徒名 | 教科名 | 点数 |
|---|---|---|
| 生徒1 | 数学 | 80 |
| 生徒2 | 数学 | 90 |
| 生徒1 | 英語 | 85 |
| 生徒2 | 英語 | 70 |
| 生徒1 | 国語 | 89 |
| 生徒2 | 国語 | 90 |
SQL
SELECT
"生徒名"
, "教科名"
, "点数"
FROM
(
SELECT
*
, ROW_NUMBER() OVER (PARTITION BY "教科名" ORDER BY "点数" DESC) rank
FROM
test_result
WHERE
"教科名" IN ('英語', '数学')
) sq
WHERE
rank = 1
SELECT
"生徒名"
, "教科名"
, "点数"
FROM
(
SELECT
*
, DENSE_RANK() OVER (PARTITION BY "教科名" ORDER BY "点数" DESC) rank
FROM
test_result
WHERE
"教科名" IN ('英語', '数学')
) sq
WHERE
rank = 1