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