4.对表进行分组
a.使用Group By应该注意以下几点
- 1.只能写在Select语句中(如果有where子句需要写在where子句之后)
- 2.Group By的结果是无序的
- 3.where 子句中不能使用聚合函数
- 4.Group By的筛选数据条件应该写在HAVING子句中
b.Group by 常见的问题
- 1.select中使用了对于的列值
- 2.在where子句中使用聚合函数
c.筛选分组--Having
- eg:sc学生成绩表,有sno字段,cno课程表,grade分数
- select cno,count(*) from sc group by cno having count(*)>2;
- Having如何使用
-
- 1.常数
2.group by中指定的元素(建议写在where条件中)
- select cno,count(*) from sc group by cno having cno="EE-1"
- 3.聚合函数
- select cno,count(*) from sc group by cno having count(*)>2
d.where子句与Having子句的执行速度比较
- 1.SQL执行顺序:From-->WHERE-->Group By-->Having-->Select
- 2.Group by中会按照分组的列进行排序,排序的数据越少越好
- 3.所以筛选数据放在where中比较合适
-
- a.Having中只能使用group by对应的列
- b.where子句可以删除一部分数据,还可以为对应的列添加索引