myspl通过 grade 表统计每个学生分数大于 70 的课程数,查询结果只显示课程数大于等 于 3 的学生的学号和课程数
时间: 2024-05-02 19:21:02 浏览: 21
可以使用如下的 SQL 查询语句:
```
SELECT student_id, COUNT(*) AS course_count
FROM grade
WHERE score > 70
GROUP BY student_id
HAVING course_count >= 3;
```
这个查询语句首先通过 `WHERE` 子句筛选出分数大于 70 的记录,然后通过 `GROUP BY` 子句按照学生 ID 进行分组,对每个学生统计其课程数,最后通过 `HAVING` 子句筛选出课程数大于等于 3 的学生,并将学生 ID 和课程数作为查询结果返回。
相关问题
mysql查询“C语言程序设计”课程分数大于该课程平均分数的学生的学号、姓名和分数信息在两个表里一个grade一个curriculum
SELECT g.id, g.name, g.score
FROM grade g, curriculum c
WHERE g.course = c.course_name
AND c.course_name = 'C语言程序设计'
AND g.score > (SELECT AVG(score) FROM grade WHERE course = 'C语言程序设计')
mysql查询“C语言程序设计”课程分数大于该课程平均分数的学生的学号、姓名和分数信息在三个表里一个grade一个curriculum一个student
可以使用如下的SQL语句:
SELECT s.id, s.name, g.score
FROM student s
INNER JOIN grade g ON s.id = g.student_id
INNER JOIN curriculum c ON g.curriculum_id = c.id
WHERE c.name = 'C语言程序设计' AND g.score > (
SELECT AVG(g2.score)
FROM grade g2
INNER JOIN curriculum c2 ON g2.curriculum_id = c2.id
WHERE c2.name = 'C语言程序设计'
)
ORDER BY s.id;
解释:
- 首先使用INNER JOIN将三个表连接起来,其中student表和grade表通过学生的id关联,grade表和curriculum表通过课程的id关联;
- 然后使用WHERE子句筛选出课程名称为“C语言程序设计”的记录,并使用子查询计算出该课程的平均分数,并将平均分数与学生的分数进行比较;
- 最后使用ORDER BY子句按照学生的id升序排序。