sql 语句中:select a ,b,c 然后group by一定要接a,b,c吗?

2024-12-21 12:17:34
推荐回答(5个)
回答1:

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 返回每个可能的组和子组组合,因此不论指定分组列时所使用的是什么顺序,行数都相同。



回答2:

不一定的,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

回答3:

可以不用,如果你select查询字段中你用了函数(比如max、min之类的),就要除函数之外的其余字段
select max(a),b,c from table group by b,c

回答4:

group by 是为了确定数据用的,比如a列有两个“张三”,你要找不重复的数据的话就要用到dintinct(a),这样就会列出a列不重复的数据,张三只会出现一个,但是如果这时候你还要找其他的数据b,c的时候其实b和c都有两条数据与张三匹配,所以这时候SQL语法是不让你通过的,这时候加上group by b,c就是代表把b,c列的数据分组排列了,这样就能正常显示了,

一般像你上面说的没什么需要的话没必要用到group by,要排序就用order by就行了

回答5:

group by 有的,select后面必须有,而反过来就不用了!