sql查询“查询各门课程的选修及格人数、及格比率。各列标题显示为课程号、及格人数、选修人数、及格比率。”
时间: 2023-06-10 07:03:23 浏览: 310
您好,可以使用如下的SQL查询语句来实现您的需求:
```
SELECT
course_id AS '课程号',
COUNT(IF(score >= 60, 1, NULL)) AS '及格人数',
COUNT(*) AS '选修人数',
CONCAT(ROUND(COUNT(IF(score >= 60, 1, NULL)) / COUNT(*) * 100, 2), '%') AS '及格比率'
FROM
score
GROUP BY
course_id;
```
这条查询语句会从名为 `score` 的数据表中检索每个课程的选修人数、及格人数和及格比率。其中,`IF` 函数用来判断每个学生的分数是否达标,如果达标,则记为 1,否则记为 NULL;`COUNT` 函数用来分别统计及格人数和选修人数;`ROUND` 函数用来保留小数点后两位并转化为百分比形式。最后,`GROUP BY` 子句用于按照课程号来分组查询。
相关问题
写一个sql语句“查询各门课程的选修及格人数、及格比率。各列标题显示为课程号、及格人数、选修人数、及格比率。”
您好,以下是对应的 SQL 语句:
SELECT
课程号,
COUNT(CASE WHEN 成绩 >= 60 THEN 1 ELSE NULL END) AS 及格人数,
COUNT(*) AS 选修人数,
ROUND(COUNT(CASE WHEN 成绩 >= 60 THEN 1 ELSE NULL END) / COUNT(*) * 100, 2) AS 及格比率
FROM
成绩表
GROUP BY
课程号;
希望我的回答对您有所帮助。
用mysql一表查询各门课程的选修及格人数、及格比率。
要在MySQL中查询一门课程的选修及格人数以及及格比率,你需要创建一个SQL查询,通常涉及到对数据库表的JOIN操作,并可能需要使用GROUP BY和COUNT函数来统计及格人数,同时计算总人数和比率。假设你有一个名为`students`的表,包含学生信息,如`student_id`, `course_id`, 和`grade`字段,其中`course_id`标识课程,`grade`表示成绩(例如0代表不及格,1代表及格),你可以尝试这样的查询:
```sql
SELECT
c.course_id AS '课程ID',
COUNT(s.student_id) AS '选修人数',
(COUNT(CASE WHEN s.grade = 1 THEN s.student_id END) * 100.0 / COUNT(s.student_id)) AS '及格比率'
FROM
students s
JOIN
courses c ON s.course_id = c.id
WHERE
c.course_id = '目标课程ID' -- 请替换为你要查询的具体课程ID
GROUP BY
c.course_id;
```
在这个查询中:
- `COUNT(s.student_id)` 计算了选修该课程的学生总数。
- `COUNT(CASE WHEN s.grade = 1 THEN s.student_id END)` 计算了及格(grade=1)的学生数。
- `(COUNT(...) * 100.0 / COUNT(...))` 计算了及格比率,乘以100得到百分比。
阅读全文