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 后有很多字段,是不是只有最最后一个字段起到作用?

解决方案 »

  1.   

    当然不同!
    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 
      

  2.   

    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 后面跟着的东西.
      

  3.   

    三个汇总不同吧
    a,b,c为先基于a汇总,再基于b汇总,最后基于c汇总
    c,b,a为先基于c汇总,再基于b汇总,最后基于a汇总
      

  4.   

    “最后一个字段起到作用”这点是不对的但是group by a,b,c 和 group by b,c,a 出来的结果应该是一样的
      

  5.   

    排列次序不一样,
    用group by  a,b,c with cube最明显
      

  6.   

    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,结果集集不相同了