比如mysql里有一个table students
里面有一项是课程
里面有各种各样的课程 比如数学啊 语文啊 或其他的 我也不清楚具体有多少课程 
我怎么统计出这项有多少值 每个值有多少numstudent
name       course     
小张       语文
李四       数学
小王       音乐
老李       数学相当于一个map 我可以用遍历的方法一一读取 然后记录
但是sql中有这样的查询语句不
查询出course里有3项 语文1个人 数学2个人 音乐一个人

解决方案 »

  1.   

    select course,count(*) persons from student group by course;
      

  2.   

    统计出这项有多少值用
    select distinct(course) from students;
    每个值有多少num 
    select sum((case when course='语文' then 1 else 0 end)) as '语文',
    sum((case when course='数学' then 1 else 0 end)) as '数学',
    sum((case when course='音乐' then 1 else 0 end)) as '音乐'
    from students;
    顺着这个写。
      

  3.   

    select course,count(*)
    from student
    group by course
      

  4.   

    mysql> select * from student;
    +------+--------+
    | name | course |
    +------+--------+
    | 小张 | 语文   |
    | 李四 | 数学   |
    | 小王 | 音乐   |
    | 老李 | 数学   |
    +------+--------+
    4 rows in set (0.01 sec)mysql> select course,count(*)
        -> from student
        -> group by course;
    +--------+----------+
    | course | count(*) |
    +--------+----------+
    | 数学   |        2 |
    | 语文   |        1 |
    | 音乐   |        1 |
    +--------+----------+
    3 rows in set (0.05 sec)mysql>
      

  5.   

    select course,count(*) from student group by course;