题目:有一张学生成绩表【score_detail】,记录学生每门科目的成绩(每个学生的科目数不一 定相等) 问题1:输出一份学生名单,仅包含所有科目均及格(及格:成绩>=60)的学生问题2:输出一份学生名单,要求在名单的学生,均无数学科目的成绩
时间: 2024-10-16 16:04:58 浏览: 34
C-student-score.rar_Score!_c语言 系统_c语言score_学生成绩管理_成绩管理系统 C语言
题目描述涉及的是数据库查询操作,假设我们正在处理SQL数据库。针对两个问题,我们可以编写如下的SQL查询:
**问题1: 输出一份学生名单,仅包含所有科目均及格的学生**
```sql
SELECT student_name
FROM score_detail
WHERE score >= 60
GROUP BY student_id
HAVING COUNT(subject) = (SELECT COUNT(*) FROM score_detail WHERE student_id IN (SELECT student_id FROM score_detail))
```
这个查询首先找出所有科目成绩大于等于60的学生,然后通过`GROUP BY`按学生ID分组,并使用`HAVING`条件检查每个学生的所有科目数量是否等于总记录数,即所有科目都及格。
**问题2: 输出一份学生名单,要求在名单的学生,均无数学科目的成绩**
```sql
SELECT student_name
FROM (
SELECT student_id, subject, score
FROM score_detail
GROUP BY student_id, subject
) subquery
WHERE COUNT(*) = 0
```
这里首先对每个学生每门科目都进行计数,如果某学生的某个科目没有任何成绩记录(计数结果为0),则将该学生包括在结果列表中。
阅读全文