sql 语句中:select a ,b,c 然后group by不一定要接a,b,c,如果要按a,b,c分成各个不同的小组就需要。
Group By语句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。Group By + [分组字段](可以有多个)。在执行了这个操作以后,数据集将根据分组字段的值将一个数据集划分成各个不同的小组。
如果在返回集字段中,这些字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。
扩展资料:
在结果集内返回每个可能的组和子组组合的 GROUP BY 汇总行。GROUP BY 汇总行在结果中显示为 NULL,但可用来表示所有值。使用 GROUPING 函数确定结果集内的空值是否是 GROUP BY 汇总值。
结果集内的汇总行数取决于 GROUP BY 子句内包含的列数。GROUP BY 子句中的每个操作数(列)绑定在分组 NULL 下,并且分组适用于所有其它操作数(列)。由于 CUBE 返回每个可能的组和子组组合,因此不论指定分组列时所使用的是什么顺序,行数都相同。
不一定的,select a,b,c from table group by a,b,c,d 也是正确的写法。
SQL的grop by 语法为,
select 选取分组中的列+聚合函数 from 表名称 group by 分组的列
从语法格式来看,是先有分组,再确定检索的列,检索的列只能在参加分组的列中选。
所以问题中的,group by 后的 a,b,c是先确定的。select后的a,b,c才是可以变的。即
以下语句都是正确的:
select a,b,c from table group by a,b,c,d
select a,b from table group by a,b,c
select a,max(a) from table group by a,b,c
以下语句则是错误的:
select a,b,c from table group by a,b
select a,b,c from table group by a
可以不用,如果你select查询字段中你用了函数(比如max、min之类的),就要除函数之外的其余字段
select max(a),b,c from table group by b,c
group by 是为了确定数据用的,比如a列有两个“张三”,你要找不重复的数据的话就要用到dintinct(a),这样就会列出a列不重复的数据,张三只会出现一个,但是如果这时候你还要找其他的数据b,c的时候其实b和c都有两条数据与张三匹配,所以这时候SQL语法是不让你通过的,这时候加上group by b,c就是代表把b,c列的数据分组排列了,这样就能正常显示了,
一般像你上面说的没什么需要的话没必要用到group by,要排序就用order by就行了
group by 有的,select后面必须有,而反过来就不用了!