groupby多个条件
⾸先group by 的简单说明:
group by ⼀般和聚合函数⼀起使⽤才有意义,⽐如 count sum avg等,使⽤group by的两个要素:
(1) 出现在select后⾯的字段 要么是是聚合函数中的,要么就是group by 中的.groupby分组
(2) 要筛选结果 可以先使⽤where 再⽤group by 或者先⽤group by 再⽤having
下⾯看下 group by多个条件的分析:
在SQL查询器输⼊以下语句
create table test
(
a varchar(20),
b varchar(20),
c varchar(20)
)
insert into test values(1,‘a’,‘甲’)
insert into test values(1,‘a’,‘甲’)
insert into test values(1,‘a’,‘甲’)
insert into test values(1,‘a’,‘甲’)
insert into test values(1,‘a’,‘⼄’)
insert into test values(1,‘b’,‘⼄’)
insert into test values(1,‘b’,‘⼄’)
insert into test values(1,‘b’,‘⼄’)
第⼀次查询
select * from test; 结果如下图:
结果中 按照b列来分:则是 5个a 3个b.
按照c列来分:则是 4个甲 4个⼄.
第⼆次 按照 b列来分组 代码如下
select count(a),b from test group by b
第三次 按照 c列来分组 代码如下
select count(a),c from test group by c
第四次 按照 b c两个条件来分组
select count(a),b,c from test group by b,c
第五次 按照 c b 顺序分组
select count(a),b,c from test group by c,b
可以看出 group by 两个条件的⼯作过程:
先对第⼀个条件b列的值 进⾏分组,分为 第⼀组:1-5, 第⼆组6-8,然后⼜对已经存在的两个分组⽤条件⼆ c列的值进⾏分组,发现第⼀组⼜可以分为两组 1-4,5
第四次和第五次查询结果的区别:
按照 b c两个条件来分组,先对第⼀个条件b列的值 进⾏分组,分为 第⼀组:1-5, 第⼆组6-8,然后⼜对已经存在的两个分组⽤条件⼆ c列的值进⾏分组,发现第⼀组⼜可以分为两组 1-4,5。
按照 c b两个条件来分组,先对第⼀个条件c列的值 进⾏分组,分为 第⼀组:1-4, 第⼆组5-8,然后⼜对已经存在的两个分组⽤条件⼆ b列的值进⾏分组,发现第⼆组⼜可以分为两组 5, 6-8。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论