SQL语言到底什么时候要用到group by ?

2024-11-18 15:49:13
推荐回答(5个)
回答(1):

通常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]

回答(2):

说的多怕你混,你就记住当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只作用于分组的组内。

到现在我怎么用都不会混淆了,希望能帮助你。

回答(3):

通常SELECT语句中使用了分组子句就会有聚合操作。 但执行聚合操作不一定要用分组子句。

  如:求男同学的人数,此时聚合值只有一个,因此不必分组。

SELECT COUNT(*)

from student

where ssex='男';

但同一个聚合操作的值有多个时,必须使用分组子句。

如:求每一年龄的学生人数。此时聚合值有多个,与年龄有关,因此必须分组。

select sage,COUNT(*)

from student

where ssex='男'

group by sage;

回答(4):

分类汇总的时候用。group by :表示按字段分组。例如:分别计算男性用户和女性用户的平均年龄。select 性别,avg(年龄) as average from 表名 group by 性别

回答(5):

指定用来设置转出行的组。
如:学生成绩表:学号,课程名称,成绩
统计每个学生的成绩:
select 学号, sum(成绩) as 成绩 from 成绩表 group by 学号