name | subject | score |
keming | math | 50 |
tom | eng | 60 |
kitty | eng | 70 |
select count(*) from student group by subject;
在上面语句中,红色部分会先被执行,把表格先group了:
name | subject | score |
keming | math | 50 |
tom kitty | eng | 60 70 |
此时除了用来group的值:subject外,name和score都会出现多个值的情况
这个时候,执行select,此时如果select name或者score或者*都会出错,因为无论是name,score还是*都有一行出现两个值的情况,而select不允许返回一行两个值的情况,所以要用聚合函数例如sum,count....来将它们合并成一个值
select count(*) from student group by subject;
这个语句将会成功返回
subject | count |
math | 1 |
eng | 2 |