检索没有选修101课程且选修课程数为两门的学生的姓名和平均成绩,并按平均成绩降序排列。
时间: 2023-12-16 16:04:49 浏览: 93
好的,这是一个SQL查询问题。假设有如下的学生信息表(表名为students):
| id | name | course | score |
|----|---------|--------|-------|
| 1 | Alice | 101 | 95 |
| 2 | Bob | 101 | 87 |
| 3 | Charlie | 102 | 92 |
| 4 | David | 103 | 88 |
| 5 | Eve | 102 | 90 |
| 6 | Frank | 101 | 79 |
| 7 | Grace | 104 | 91 |
| 8 | Henry | 102 | 85 |
下面是符合要求的SQL查询语句:
```SQL
SELECT name, AVG(score) AS avg_score
FROM students
WHERE course NOT IN (101)
GROUP BY name
HAVING COUNT(DISTINCT course) = 2
ORDER BY avg_score DESC;
```
这条查询语句使用了 WHERE 子句和 GROUP BY 子句,以及 HAVING 和 ORDER BY 子句。具体来说:
- WHERE 子句中的 course NOT IN (101) 表示选修课程不是101。
- GROUP BY 子句中的 name 表示按照姓名分组。
- HAVING 子句中的 COUNT(DISTINCT course) = 2 表示选修课程数为2门。
- ORDER BY 子句中的 avg_score DESC 表示按照平均成绩降序排列。
执行这条查询语句,就可以得到符合要求的学生姓名和平均成绩。
阅读全文