Mysqlcount+if函数结合使⽤
Mysql count+if 函数结合使⽤
2017.05.18 13:48* 字数 508 阅读 148评论 0喜欢 1
涉及函数
count函数
mysql中count函数⽤于统计数据表中的⾏的总数,或者根据查询结果统计某⼀列包含的⾏数,常见的⽤法如下 count(*) 计算表的总⾏数,包括空值 count(字段名) 计算指定列下的总⾏数,忽略空值(这点很重要,后⾯我们将利⽤这个特性)
if(expr, v1, v2)函数
if(expr, v1, v2) 函数的意思是,如果表达式expr为true(expr<>0 and expr <> NULL),则if()返回的是v1,否则返回v2
组合上述两个函数,可以在⼀条语句中统计出满⾜不同条件的⾏数
业务场景:在⼀个表中记录了不同出版社所拥有的所有的书,以及每本书对应的类型。
表结构如下:
id    press            bookName                      bookTyoe
1      新华出版社《Thinking in Java》计算机类
现需统计出不同出版社的⾥⾯不同类型的书籍的总量
例:统计不同出版社中⽂学类书籍数量
select count( if( bookTyoe = ‘⽂学类’, id, null ) ) from table group by press
分析:当type=1时,会返回对应的id的值,否则放回null,对于指定列的count函数,null是被忽略的,这样就得到了我们想要的统计数量了。
同理,统计不同出版社中科幻类+计算机书籍数量:
select count( if( bookTyoein (‘科幻类’, ‘计算机书籍’), id, null ) ) from table group by presscount函数怎么统计文字
如果是联表查询,返回结果中的id不是唯⼀的话,想要去掉重复的id再统计,还可以在if前⾯加上DISTINCT,即 count( DISTINCT if( type in (2, 3), id, null ) )
等效写法 count( DISTINCT (type = 2  and  type = 3)  or null )
也可以使⽤sum+if替代上述写法
select sum( if( bookTyoeinin (‘科幻类’, ‘计算机书籍’), 1, 0 ) )from table group by press
© 著作权归作者所有
举报⽂章
写了 4561 字,被 3 ⼈关注,获得了 15 个喜欢
⼩礼物⾛⼀⾛,来简书关注我

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。