## 关联查询与聚合函数 # 1. 教语文的老师所带班级各多少学生? SELECT t.name, su.name, c.name, COUNT(s.id) FROM teacher t, subject su, class c, student s WHERE s.class_id = c.id AND c.teacher_id = t.id AND t.subject_id = su.id AND su.name = '语文';该代码如何修改
时间: 2024-03-17 10:45:43 浏览: 17
这段代码可以进行以下修改:
1. 使用INNER JOIN语法进行关联查询,以提高查询效率,如下所示:
```
SELECT t.name, su.name, c.name, COUNT(s.id)
FROM teacher t
INNER JOIN class c ON t.id = c.teacher_id
INNER JOIN subject su ON t.subject_id = su.id
INNER JOIN student s ON s.class_id = c.id
WHERE su.name = '语文'
GROUP BY t.name, su.name, c.name;
```
2. 使用GROUP BY子句对结果进行分组,以便统计每个班级的学生人数。
3. 将COUNT函数应用于每个班级的学生人数,而不是应用于所有学生的总数。
4. 可以使用LEFT JOIN来包含没有学生的班级,如下所示:
```
SELECT t.name, su.name, c.name, COUNT(s.id)
FROM teacher t
INNER JOIN class c ON t.id = c.teacher_id
INNER JOIN subject su ON t.subject_id = su.id
LEFT JOIN student s ON s.class_id = c.id
WHERE su.name = '语文'
GROUP BY t.name, su.name, c.name;
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)