問題:
特定の列に最大の数値を格納する行を検索する必要があります。
例:
私たちのデータベースには、student
次の列にデータがあります:id
、first_name
、last_name
、およびgrade
。
id | first_name | last_name | グレード |
---|---|---|---|
1 | リサ | ジャクソン | 3 |
2 | ゲイリー | ラリー | 5 |
3 | トム | ミシュラン | 2 |
4 | マーティン | バーカー | 2 |
5 | エリー | 黒 | 5 |
6 | メアリー | シンプソン | 4 |
最高の成績を収めている生徒を見つけましょう。
解決策:
SELECT id, first_name, last_name, grade FROM student WHERE grade = (SELECT MAX(grade) FROM student);
結果は次のとおりです。
id | first_name | last_name | グレード |
---|---|---|---|
2 | ゲイリー | ラリー | 5 |
5 | エリー | 黒 | 5 |
ディスカッション:
列の最大値を見つけるには、MAX()
を使用します 集計関数;最大値を見つけるには、列名または式が必要です。この例では、サブクエリは列の成績で最大の数値を返します(サブクエリ:SELECT MAX(grade) FROM student
)。メインクエリには、ID、名前と姓、およびそれらのグレードが表示されます。列のすべての値の中で最大値の行のみを表示するには(例:SELECT MAX(grade) FROM student
)、サブクエリでWHEREを使用します。 WHEREに、集計関数によって返される値と同等の値を持つ列の名前をサブクエリに入力します(この例では、WHERE grade = (SELECT MAX(grade) FROM student)
。