全科目平均以上の科目を抽出するSQLの書き方

SQL Server

学生の成績データベースで、各科目ごとの平均点が全科目の平均点以上である科目を抽出したい場合、SQLでの集計とサブクエリを使うことで簡単に実現できます。本記事では、科目番号、科目名、科目平均点を取得する具体的な方法を解説します。

1. 基本的な考え方

まず、各科目の平均点を計算し、次に全科目の平均点を計算します。そして、各科目の平均点が全体平均以上である科目を抽出します。

2. SQL例

以下はサンプルSQLです。

SELECT 科目番号, 科目名, AVG(点数) AS 科目平均点
FROM 成績
GROUP BY 科目番号, 科目名
HAVING AVG(点数) >= (SELECT AVG(点数) FROM 成績);

ここで、AVG(点数)で各科目の平均点を求め、サブクエリで全科目平均を計算しています。HAVING句で条件を指定することで、全体平均以上の科目のみ抽出可能です。

3. 注意点

テーブル名やカラム名は環境に合わせて変更してください。また、NULLが含まれる場合は平均計算に注意が必要です。必要に応じてWHERE 点数 IS NOT NULLを加えることで正確な平均値が得られます。

4. 応用

さらに、科目ごとの上位N件の抽出や特定学年の抽出にも応用可能です。サブクエリやウィンドウ関数を組み合わせることで柔軟な分析ができます。

まとめ

SQLで全科目平均以上の科目を抽出するには、GROUP BYHAVING、サブクエリを活用します。これにより、科目番号・科目名・科目平均点を簡単に取得可能です。

コメント

タイトルとURLをコピーしました