作者:知乎用户
链接:https://www.zhihu.com/question/22191084/answer/150687850
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/22191084/answer/150687850
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
用三种方法实现:
1、select sid ,count(1) ,sum(case when type > 0 then 1 else 0 end) from t_170309 group by sid
其实你自己的理解最接近于这个case when的语法
2、简洁的语法,可用count(condition or null)
select sid ,count(1) ,count(type>0 or null) from t_170309 group by sid;
3、避开count,用sum(if(condition,value1,value2))来实现
if函数是指,如果条件成立则返回value1,否则value2,所以这个思路类似于方法1
select sid ,count(1) ,sum(if(type>0 ,1,0 )) from t_170309 group by sid