sql语言聚合函数(算出平均分、最高成绩、最低成绩、用分类聚合给出及格的人数和不及格的人数、对分类聚合汇总算出总人数)
时间: 2023-08-06 11:07:54 浏览: 146
以下是 SQL 语言中常用的聚合函数,可以用于计算平均分、最高成绩、最低成绩等:
1. 平均值(AVG):
```
SELECT AVG(score) FROM table_name;
```
2. 最大值(MAX):
```
SELECT MAX(score) FROM table_name;
```
3. 最小值(MIN):
```
SELECT MIN(score) FROM table_name;
```
为了计算及格和不及格的人数,我们可以使用分类聚合函数(GROUP BY):
1. 给出及格和不及格的人数:
```
SELECT pass, COUNT(*) FROM table_name GROUP BY pass;
```
其中,`pass` 是一个表示是否及格的字段,可以是 1 或 0,`COUNT(*)` 可以统计每个分组中的行数,从而得出及格和不及格的人数。
2. 对分类聚合汇总算出总人数:
```
SELECT category, COUNT(*) FROM table_name GROUP BY category WITH ROLLUP;
```
其中,`category` 是一个分类字段,`WITH ROLLUP` 可以在结果集中添加一个汇总行,显示所有分类的总行数。
注意,以上查询语句中的 `table_name` 需要替换为您实际使用的表名。
相关问题
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语句计算得到。
编写sql语句,计算每个学校、每个年级、每个班的各科平均分、最高分、及格人数,其中及格分数线为90分
编写这样的SQL语句涉及到多级聚合和条件判断,假设我们有`grades`表,包含以下字段:`school_id`, `class_id`, `grade`, `subject`, `score`。下面是一个示例结构的SQL查询:
```sql
WITH scores_per_class AS (
SELECT
school_id,
class_id,
grade,
subject,
AVG(score) OVER (PARTITION BY school_id, class_id, grade, subject) as avg_score,
MAX(score) OVER (PARTITION BY school_id, class_id, grade, subject) as max_score,
COUNT(CASE WHEN score >= 90 THEN 1 END) OVER (PARTITION BY school_id, class_id, grade) as passing_students
FROM grades
)
SELECT
s.school_id,
s.class_id,
s.grade,
s.subject,
s.avg_score,
s.max_score,
s.passing_students
FROM scores_per_class s;
```
这个查询首先通过窗口函数(Window Function)计算了每个班级、学科的每个年级的平均分(avg_score)、最高分(max_score),以及及格的学生人数(passing_students)。这里的CASE WHEN语句用于检查分数是否大于等于90,并统计符合条件的数量。
阅读全文