查询出每门课的及格人数和不及格人数mysql实现
时间: 2023-09-13 09:13:47 浏览: 623
可以使用以下 MySQL 语句查询每门课的及格人数和不及格人数:
```
SELECT course_name,
SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) AS pass_count,
SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS fail_count
FROM scores
GROUP BY course_name;
```
其中,`scores` 表是包含每个学生的成绩和所属课程的表。`course_name` 是课程名称。`pass_count` 是及格人数,通过使用 `CASE` 表达式计算出成绩大于等于 60 的人数。`fail_count` 是不及格人数,通过使用 `CASE` 表达式计算出成绩小于 60 的人数。`GROUP BY` 语句按照课程名称进行分组。
相关问题
mysql查询每门课程不及格学生人数
在MySQL中,要查询每门课程不及格的学生人数,通常需要使用JOIN操作连接包含学生信息和成绩信息的数据表,假设我们有两个表:
1. `students` 表(字段:student_id, name)
2. `grades` 表(字段:course_id, student_id, grade)
你可以使用以下SQL查询示例:
```sql
SELECT grades.course_id, COUNT(*) as total_students,
SUM(CASE WHEN grade < '60' THEN 1 ELSE 0 END) as failed_students
FROM students
JOIN grades ON students.student_id = grades.student_id
GROUP BY grades.course_id;
```
这个查询做了以下几件事:
- 使用JOIN将`students`表和`grades`表基于学生ID关联起来。
- 对每个课程(course_id),计算有多少学生的grade小于60(一般及格线),这通过CASE WHEN表达式实现,如果grade小于60,则计数加一,否则不计数。
- 使用COUNT(*)统计总学生数,SUM函数对不及格学生计数。
- GROUP BY grades.course_id按课程分组,以便获取每个课程的结果。
mysql 完成年报业务,统计每年每门课程及格的学生人数和不及格的学生人数。
好的,以下是完成年报业务的 SQL 查询语句:
```sql
SELECT year, course, COUNT(CASE WHEN grade >= 60 THEN 1 ELSE NULL END) AS pass_count, COUNT(CASE WHEN grade < 60 THEN 1 ELSE NULL END) AS fail_count
FROM grades
GROUP BY year, course;
```
该查询语句使用了 GROUP BY 子句将成绩按照年份和课程进行分组,然后使用 COUNT 和 CASE WHEN 子句分别统计及格和不及格的学生人数,并将结果作为 pass_count 和 fail_count 的别名输出。
你需要根据实际情况修改表名和字段名,以及查询条件和其他细节。
阅读全文