select name, count(*) from   grounp by namegroup by 分组键
就是依据谁进行分组

解决方案 »

  1.   

    group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
    SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。
    某个员工信息表结构和数据如下:
      id  name  dept  salary  edlevel  hiredate 
          1 张三 开发部 2000 3 2009-10-11
          2 李四 开发部 2500 3 2009-10-01
          3 王五 设计部 2600 5 2010-10-02
          4 王六 设计部 2300 4 2010-10-03
          5 马七 设计部 2100 4 2010-10-06
          6 赵八 销售部 3000 5 2010-10-05
          7 钱九 销售部 3100 7 2010-10-07
          8 孙十 销售部 3500 7 2010-10-06 
    例如,我想列出每个部门最高薪水的结果,sql语句如下:
    SELECT DEPT, MAX(SALARY) AS MAXIMUM
    FROM STAFF
    GROUP BY DEPT
    查询结果如下:
          DEPT  MAXIMUM 
          开发部 2500
          设计部 2600
          销售部 3500
    解释一下这个结果:
    1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
    2、“列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
    注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
      

  2.   

    2楼正解。不过单词写错了。SELECT NAME, COUNT(*) FROM    GROUP BY NAME;记得以前有一个面试题,有这样出过。
      

  3.   


    也就是如果要查询一个字段的总和,或者最小数,通俗一点就是做数据查询的时候就需要用 group by来从新组合我试过,比如要查询   select id,sum(dis) from   这样就会报错,
    select id,max(dis) from   这个也会报错select id,max(dis) as name from  这个也会报错也就是如果用统计查询的字段必须要用 group by 来把统计查询出来的字段单独列一个字段出来,可以这样理解吗select id,max(dis) from  group by dis  就是查询max(dis)查询的出来的值用 group by来重新命名一个列出来
      

  4.   

    sum、max 都是数学函数,而你的 dis 列是字符型的,当然就要报错啦
    group by 是分组的意思
    有 group by 就按指定列的内容分组
    没有 group by 就是全部记录算一组