通常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 后 既有 表结构本身的字段,又有需要使用聚合函数(COUNT(),SUM(),MAX(),MIN(),AVG()等)的字段,就要用到group by分组,查询的限定条件里有需要用聚合函数计算的字段时也需要用分组,比如:
select avg(grade) from cs
查询选课表(cs)中学生的总成绩(grade);这里就不用分组;
又如:
select sno,sum(grade) from cs group by sno
查询选课表里每个学生的总成绩,这里就要用分组,分组的依照字段必须是select 后没有被计算过的原始字段;
以上是分组用法。
本来我也弄不清,书上说的太模糊,后来自己代码写多了就懂了。
分组的概念:就是让经过计算的查询结果根据某一个或者多个字段分成一组一组(一行一行)的排列显示。
另外顺便介绍下,WHERE和HAVING的区别,WHERE作用于全表,而HAVING只作用于分组的组内。
到现在我怎么用都不会混淆了,希望能帮助你。
通常SELECT语句中使用了分组子句就会有聚合操作。 但执行聚合操作不一定要用分组子句。
如:求男同学的人数,此时聚合值只有一个,因此不必分组。
SELECT COUNT(*)
from student
where ssex='男';
但同一个聚合操作的值有多个时,必须使用分组子句。
如:求每一年龄的学生人数。此时聚合值有多个,与年龄有关,因此必须分组。
select sage,COUNT(*)
from student
where ssex='男'
group by sage;
分类汇总的时候用。group by :表示按字段分组。例如:分别计算男性用户和女性用户的平均年龄。select 性别,avg(年龄) as average from 表名 group by 性别
指定用来设置转出行的组。
如:学生成绩表:学号,课程名称,成绩
统计每个学生的成绩:
select 学号, sum(成绩) as 成绩 from 成绩表 group by 学号