私は大学で SQL を勉強していて、この演習を練習していて行き詰まりました。特定の授業で学生が合格したすべての試験を保存するデータベースがあります。
データベース内のテーブルは次のとおりです。
Student(**number**, name, birthday)
Exam(**student_number**, **teaching_code**, vote) *(store the exams passed by the students with vote)*
Teaching(**code**, name)
number は Student テーブルの主キー、code は Teaching の場合、"student_number" は Student の "number" を参照し、"teaching_code" は Teaching の "code" を参照します。
この演習では、平均点が最も高い生徒の番号を選択するように求められます。
各学生の平均を含むテーブルを提供するクエリの書き方は知っていますが、その中から最高のものを選択する方法や、対応する学生数を表示する方法がわかりません!
一部の学生が同じ最高平均を持っている場合、制限コマンドを使用したソリューションは機能しません...
生徒ごとの平均点を表示するクエリは次のとおりです。
select avg(e.vote) as Average from STUDENT s, EXAM e
where s.number = e.student_number
group by s.number
編集: SQL で MAX 関数を試しました。これを試しました:
select MAX( avg(e.vote) ) as Average from STUDENT s, EXAM e
where s.number = e.student_number
group by s.number
しかし、「エラーコード:1111。グループ機能の使用が無効です」と表示されます
おそらく解決策はネストされたクエリを使用することですが、私はそれを実現できません。