GROUP BY 关键字后面跟着列的列表,称为分组列。GROUP BY 子句限制结果集中的行;对于分组列中的每个非重复值只有一行。每个结果集行都包含与其分组列中特定值相关的汇总数据。多看SQL SERVER联机帮助

解决方案 »

  1.   

    --测试
    create table tb1(客户名称 varchar(10),数量 int)
    insert into tb1 select '001',90
    union all select '002',50
    union all select '002',40
    union all select '001'90
    union all select '002',50
    union all select '001',100
    --计算每个组的数量和
    select 客户名称,数量=sum(数量) from tb1 group by 客户名称--结果:
    001 280
    002 140
    --求出每个组中有重复的记录
    select  * from tb1 group by 客户名称,数量 having count(*)>1--结果:
    002 50
    001 90
    ----------------
    group by 字段名            --是以这个字段相同的值来分组
    比如:
    id  num
    1  2
    1  3
    2  3               --如果你以id分组,就只有两个组,1和2
                      --如果以num分组,那就是2和3
      

  2.   

    id, money
    1, 1
    2, 2
    1, 3
    select id , sum(money) from table group by id
    --result
    id ,money
    1, 4
    2, 2
    简单的说group by根据指定列将结果分组后合并,合并内容由聚合函数决定,上例中是sum函数
      

  3.   

    物以类聚,人以群分.分组group by 就是把相同的字段值放在一组里边进行统计.
      

  4.   

    楼上的大虾们都讲的很好呀,而且举的例子也很容易理解,小弟佩服,这下发帖子的mm应该懂了吧,
    我也是才学sql,只不过我我懂group by 的意思,嘿嘿!!!!
      

  5.   

    如果用到group by的话
    select 后面的东西要么出现在group by后面,要么是聚合函数。
    常用聚合函数:
    SUM([ALL | DISTINCT] expression) 数字表达式中所有值的和 
    AVG([ALL | DISTINCT] expression) 数字表达式中所有值的平均值 
    COUNT([ALL | DISTINCT] expression) 表达式中值的个数 
    COUNT(*) 选定的行数 
    MAX(expression) 表达式中的最高值 
    MIN(expression) 表达式中的最低值 
      

  6.   

    --求出每个组中有重复的记录
    select  * from tb1 group by 客户名称,数量 having count(*)>1--结果:
    002 50
    001 90这就是多分组
      

  7.   

    group by a,b,c是什么意思?
      

  8.   

    group by a ,ba   b  c
    1   2  5
    1   3  7
    1   2  10
    select a,b,max(c) from 表 group by a,b
    得到:
    1   2   10
    1   3   7
    --就是先以a分组,再以b分组。