left join 和 group by并用举个例子
时间: 2023-05-30 17:02:13 浏览: 154
假设我们有两个表:
学生表(Student)
| ID | Name | Age | Major |
|----|--------|-----|---------|
| 1 | Alice | 20 | Biology |
| 2 | Bob | 19 | History |
| 3 | Charlie| 21 | Math |
成绩表(Score)
| ID | StudentID | Course | Score |
|----|-----------|--------|-------|
| 1 | 1 | Math | 90 |
| 2 | 1 | English| 85 |
| 3 | 2 | Math | 95 |
| 4 | 2 | English| 80 |
| 5 | 3 | Math | 100 |
现在我们想要查询所有学生的名字和他们的平均成绩,如果学生没有成绩,则平均成绩为0。我们可以使用左连接和分组来实现。
```sql
SELECT Student.Name, COALESCE(AVG(Score.Score), 0) AS AverageScore
FROM Student
LEFT JOIN Score ON Student.ID = Score.StudentID
GROUP BY Student.ID;
```
这个查询将返回以下结果:
| Name | AverageScore |
|---------|--------------|
| Alice | 87.5 |
| Bob | 87.5 |
| Charlie | 100 |
在这个例子中,我们使用了左连接将学生表和成绩表连接起来,并使用COALESCE函数来处理学生没有成绩的情况。然后,我们使用GROUP BY将结果按学生ID进行分组,并计算每个学生的平均成绩。
阅读全文