1 SQL大致的解析流程如下
from .. on.. join.. where .. group by .. having ..select distinct ...order by .. limit..
2 举例说明:
建表及插入数据语句
- 学生表
- 成绩表
需求一:
查询所有学生的平均成绩
SELECT s.*, CAST(AVG(sc.s_score) AS DECIMAL(10,2)) as avg -- cast:将平均分数保留两位小数
FROM Student s
JOIN Score sc ON sc.s_id = s.s_id
GROUP BY sc.s_id -- GROUP BY 是要在JOIN连接查询之后的
需求二:
查询学生的平均成绩,且平均成绩大于60分
SELECT s.*, CAST(AVG(sc.s_score) AS DECIMAL(10,2)) as avg -- cast:将平均分数保留两位小数
FROM Student s
JOIN Score sc ON sc.s_id = s.s_id
GROUP BY sc.s_id -- GROUP BY 是要在 JOIN 连接查询之后的
HAVING avg > 60 -- HAVING 条件放在 GROUP BY 之后
需求三:
查询学生的平均成绩,且平均成绩大于60分,按照成绩从高到低排序
SELECT s