统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比
时间: 2024-10-07 18:06:43 浏览: 12
为了统计各科成绩各分数段的人数及其占比,你可以使用SQL的CASE语句和GROUP BY语句来实现。假设我们的成绩表名为Score,你需要按照课程编号(c_id)和成绩区间来计算。下面是一个示例的SQL查询:
```sql
SELECT c.c_id, c.c_name,
COUNT(CASE WHEN s.s_score BETWEEN 100 AND 85 THEN 1 END) AS '100-85区间',
COUNT(CASE WHEN s.s_score BETWEEN 85 AND 70 THEN 1 END) AS '85-70区间',
COUNT(CASE WHEN s.s_score BETWEEN 70 AND 60 THEN 1 END) AS '70-60区间',
COUNT(CASE WHEN s.s_score <= 60 THEN 1 END) AS '0-60区间',
(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM Score)) AS 百分比
FROM Score s
JOIN Course c ON s.c_id = c.c_id
GROUP BY c.c_id, c.c_name;
```
这个查询首先通过JOIN将Score表和Course表连接起来,然后对每个课程的成绩进行分类计数,并计算出各个分数段所占总成绩的比例。注意,百分比是以整个Score表为基础计算的,所以会有一个子查询来得到总的学生数。
-- 相关问题 --
1. 这个SQL查询中的CASE语句是如何工作的?
2. 如果表中有其他未考虑的异常值或缺失值,如何调整此查询?
3. 如何修改查询以只查看某个特定教师的教学情况?