对照书上的一个例子,学生成绩查询数据库,三个表,学生信息表,课程信息表,成绩表,先是生成表查询了高数70分以上的学生信息,现在要追加查询,不管哪一科70分以上的学生信息。但是有的学生考了好几门课,都在70分以上,追加时就会出现学号这个主键重复,这种情况应该怎么办?
在这种情况下,您可以使用 SQL 中的 GROUP BY 语句将结果按学生 ID 进行分组,然后使用聚合函数 COUNT() 确定每个学生在大于等于 70 分的课程数。
查询语句可能类似下面这样:
sql
SELECT s.id AS student_id, s.name AS student_name, COUNT(*) AS count_above_70
FROM student_info s
INNER JOIN score sc ON s.id = sc.student_id
WHERE sc.score >= 70
GROUP BY s.id, s.name
该查询语句中,我们首先连接了“学生信息表”和“成绩表”,并使用 WHERE 子句过滤符合条件(即成绩大于等于 70 分)的记录。然后,通过 GROUP BY 子句按学生 ID 将结果分组,并使用 COUNT() 函数计算每个学生的分数大于等于 70 分的课程数量。
注意,在 SELECT 子句中选择的列应该包括分组键和聚合函数所需的列,以及任何其他需要显示的数据。
希望这个解答对您有所帮助!
添加个分组依据group by。根据你的学号来分,难道你不是通过命令来执行操作的?采用界面化输入筛选条件?