mysql中的where和having,以及count和sum
1.where 和 having
简单的讲,where的条件是字段;而having 的条件可以是字段,也可以是聚集函数;
重要的是,where是筛选源数据,having多与group by 一起使用,并且条件常常是聚集函数;当有group by 时,having在group by 条件的后面,而where 在group by的前面。
聚集函数:sum,count,avg ...等等;
如表a_info中有字段:id,name,grade,score;
查询所有年级分数大于60 的成员信息;
select * from a_info where score>60;
查询每个年级总分数大于200的用哪些;
select grade ,sum(score) from a_info a group by grade having sum(score) >200;
2.count和sum
count 是‘累计’; sum是‘累加’;
还是上面的表a_info中;
查询每个年级中分数大于60的有多少人以及他们的平均分,总分是多少:
select grade ,count(*) ,avg(score) from a_info where score>60 group by grade ;
3.sql语句的执行顺序:
(1)from 选取数据源;
(2)where 筛选数据源;
(3) group by 将筛选的数据源分组;
(4)使用聚集函数计算;
(5)having 筛选分组的数据;
(6)计算表达式;
(7)order by 排序;