当然不同! group by 后的字段按顺序分组比如表X: 部门 职位 姓名 工资 A 经理 张三 2000 A 助理 李四 1000 B 经理 张三 2000 B 助理 赵六 1000select 部门,职位,姓名,SUM(工资) from x group by 部门,职位,姓名 结果: 部门 职位 姓名 工资 A 经理 张三 2000 A 助理 李四 1000 B 经理 张三 2000 B 助理 赵六 1000 select 姓名,SUM(工资) from x group by 姓名 结果: 姓名 工资 张三 4000 -- 合并了 李四 1000 赵六 1000
select a ,b ,c ,sum(d) from group by a,b,c 与 select a ,b ,c ,sum(d) from group by b,c,a不同,分组顺序为group by 后面跟着的东西.
“最后一个字段起到作用”这点是不对的但是group by a,b,c 和 group by b,c,a 出来的结果应该是一样的
排列次序不一样, 用group by a,b,c with cube最明显
select a ,b ,c ,sum(d) from group by a,b,c 与 select a ,b ,c ,sum(d) from group by b,c,a是不同的,不过如果不带WITH CUBE和WITH ROLLUP,不同的只是结果集的排序,因为默认按group by后字段排序如果带WITH CUBE,结果集也相同,排序不同如果带WITH ROLLUP,结果集集不相同了
group by 后的字段按顺序分组比如表X:
部门 职位 姓名 工资
A 经理 张三 2000
A 助理 李四 1000
B 经理 张三 2000
B 助理 赵六 1000select 部门,职位,姓名,SUM(工资) from x group by 部门,职位,姓名
结果:
部门 职位 姓名 工资
A 经理 张三 2000
A 助理 李四 1000
B 经理 张三 2000
B 助理 赵六 1000 select 姓名,SUM(工资) from x group by 姓名
结果:
姓名 工资
张三 4000 -- 合并了
李四 1000
赵六 1000
与
select a ,b ,c ,sum(d) from group by b,c,a不同,分组顺序为group by 后面跟着的东西.
a,b,c为先基于a汇总,再基于b汇总,最后基于c汇总
c,b,a为先基于c汇总,再基于b汇总,最后基于a汇总
用group by a,b,c with cube最明显
与
select a ,b ,c ,sum(d) from group by b,c,a是不同的,不过如果不带WITH CUBE和WITH ROLLUP,不同的只是结果集的排序,因为默认按group by后字段排序如果带WITH CUBE,结果集也相同,排序不同如果带WITH ROLLUP,结果集集不相同了