SQL语言到底什么时候要用到group by ?
通常SELECT语句中使用了分组子句就会有聚合zhidao操作。 但执行聚合操作不一定要用分组子句。
比如:
select avg(grade) from cs
查询选课表(cs)中学生的总成绩(grade);这里就不用分组;
又如:
select sno,sum(grade) from cs group by sno
查询选课表里每个学问生的总成绩,这里就要用分组,分组的依照字段答必须是select 后没有被计算过的原始字段;
扩展资料:
常见语句
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]
select avg(grade) from cs
查询选课表(cs)中学生的总成绩(grade);这里就不用分组;
又如:
select sno,sum(grade) from cs group by sno
查询选课表里每个学生的总成绩,这里就要用分组,分组的依照字段必须是select 后没有被计算过的原始字段;
以上是分组用法。
本来我也弄不清,书上说的太模糊,后来自己代码写多了就懂了。
分组的概念:就是让经过计算的查询结果根据某一个或者多个字段分成一组一组(一行一行)的排列显示。
另外顺便介绍下,WHERE和HAVING的区别,WHERE作用于全表,而HAVING只作用于分组的组内。
到现在我怎么用都不会混淆了,希望能帮助你。
如:学生成绩表:学号,课程名称,成绩
统计每个学生的成绩:
select 学号, sum(成绩) as 成绩 from 成绩表 group by 学号