GROUP BY 两个字段(或者多个字段的时候)

GROUP BY 两个字段(货多个字段的时候)

当group by 一个字段的时候:

   group by 一般和聚合函数一起使用才有意义,比如 count sum avg等,使用group by的两个要素:
   (1) 出现在select后面的字段 要么是是聚合函数中的,要么就是group by 中的.
   (2) 要筛选结果 可以先使用where 再用group by 或者先用group by 再用having

那么当group by 后面后两个字段的时候呢?

   我们先看表(先不管表设计时候合理,我们是看group by  分出来的结果)

    

  CREATE TABLE #TEST(
  A VARCHAR(10),
  B VARCHAR(10),
  C INT 
  )
 
  INSERT INTO #TEST VALUES('A','',1)
  INSERT INTO #TEST VALUES('A','',1)
  INSERT INTO #TEST VALUES('A','',1)
  
  INSERT INTO #TEST VALUES('A','',1)
  INSERT INTO #TEST VALUES('B','',1)
  
  INSERT INTO #TEST VALUES('B','',1)
  INSERT INTO #TEST VALUES('B','',1)
  INSERT INTO #TEST VALUES('B','',1)
  
  SELECT A,SUM(C) FROM #TEST
  GROUP BY A
  --结果:
  /*
    A    4
    B    4
  */
  SELECT B,SUM(C) FROM #TEST
  GROUP BY B
  --结果:
  /*
  甲    4
  已    4
  */
  SELECT A,B,SUM(C) FROM #TEST
  GROUP BY A,B
  
  --结果:
  /*
    A     甲     3
    B     甲     1
    A     已     1
    B     已     3
  */
  
  SELECT A,B,SUM(C) FROM #TEST
  GROUP BY B,A
  --结果:
  /*
    A    甲    3
    A    已    1
    B    甲    1
    B    已    3
  */

   发现规律没,如果没有,尼玛,再仔细看看!

   总结:

   GROUP BY A,B

   先根据B字段进行分组,如果B能分,A 也能分 就分成同一组

   这么说吧

    A  B

    1   2

    1   2

    1   3

   你可以将A B 看成一个组合字段,如果 A+B 的值能分组 则分为同一组,如果不能,那么就新建一组

    明白了吗?

posted @ 2015-12-16 13:32  咕-咚  阅读(26025)  评论(3编辑  收藏  举报