count/sum(if( , ,))

表t如下: 

【Mysql】聚合函数中使用if语句_sql

【 需求1】求flag为1的price的总和

select sum(if(flag="1",price,0)) 
from t

过程:sum函数遍历组的每一行,当遍历到某一行时,判断这个行的flag 的值是不是1,如果是1,就执行sum(price),也就是把当前行的price加入到sum中;

否则执行sum(0),也就是把0加到sum中

过程类似for循环加if判断语句,循环中枚举的是每一行。

【需求2】求flag为1的个数

select count(if(flag="1",1,null))
from t