sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题
时间: 2024-03-26 18:38:06 浏览: 20
可以使用以下 SQL 查询语句来统计各科成绩大于平均分的人:
```
SELECT subject, COUNT(*) AS num_above_avg
FROM (
SELECT subject, name, score, AVG(score) OVER (PARTITION BY subject) as avg_score
FROM scores
) AS sub
WHERE score > avg_score
GROUP BY subject
```
其中,`scores` 表包含学生的姓名、科目和成绩信息。以上 SQL 查询语句的作用是:
1. 在子查询中,使用 `AVG()` 函数计算每个科目的平均分,并使用窗口函数 `OVER (PARTITION BY subject)` 将结果按科目分组。
2. 将子查询的结果作为一个新的表 `sub`,查询出每个学科成绩大于平均分的学生,并统计人数。
3. 使用 `GROUP BY` 子句将结果按科目分组。
这样就能得到各科成绩大于平均分的人数统计结果。
相关问题
mysql计算每门课程的平均分_学生各门课程成绩统计SQL语句大全
计算每门课程的平均分可以使用如下的SQL语句:
```
SELECT course_name, AVG(score) as avg_score
FROM score
GROUP BY course_name;
```
其中,`score`表示成绩表,包含了学生的成绩信息,包括学生ID、课程ID、课程名称和成绩等字段。以上SQL语句会按照课程名称进行分组,并计算每门课程的平均分数。
如果要同时统计每个学生每门课程的成绩,可以使用如下的SQL语句:
```
SELECT student_id, course_name, AVG(score) as avg_score
FROM score
GROUP BY student_id, course_name;
```
以上SQL语句会按照学生ID和课程名称进行分组,并计算每个学生在每门课程上的平均分数。
sql 查询各科成绩最高分最低分
SQL查询各科成绩最高分、最低分和平均分可以使用以下语句:
SELECT courseid, MAX(score) AS '最高分', MIN(score) AS '最低分', AVG(score) AS '平均分' FROM student_score GROUP BY courseid;
其中,courseid是课程ID,score是成绩。使用MAX函数可以得到最高分,MIN函数可以得到最低分,AVG函数可以得到平均分。GROUP BY语句可以按照课程ID分组,得到每个课程的成绩情况。
引用中提到了可以使用MAX(score) AS '最高分', MIN(score)AS '最低分'这种写法,这是因为MAX和MIN函数可以对一列数据进行聚合操作,得到该列数据的最大值和最小值。
引用中的语句在查询各科成绩最高分、最低分和平均分的基础上,还计算了及格率、中等率、优良率和优秀率。其中,及格率是指成绩大于等于60分的学生占总人数的比例,中等率是指成绩在70-80分之间的学生占总人数的比例,优良率是指成绩在80-90分之间的学生占总人数的比例,优秀率是指成绩大于等于90分的学生占总人数的比例。这些比例可以使用SUM和CASE WHEN语句计算得到。