一、MySql中的三元运算符有两种方法:sql
case when 条件 then (条件为true时执行) else(条件为false时执行) end /*end不可少*/数据库
select *,if(expr1,expr2,expr3) from 表名函数
问题描述:统计数据时,须要查询回复量>0的记录总数spa
解决方案: IFNULL(SUM(IF(p.reply_count>0,'1','0')),0) replyCount.net
二、问题描述:进行数据统计时,在sql中使用了SUM()函数,返回的结果集中有null值code
解决方案:利用IFNULL()函数判断SUM()函数查询的结果集是否为null,若果是null,将结果设置为某一固定值(好比0)blog
参考:解决数据库查询时Null的问题(如SUM函数)get
1 #SUM(expr)函数若是表达式没有数据,那么返回的结果就会为空,下面介绍四种方法解决NUll问题: 2 3 #第一种: 采用 IFNULL(expr1,expr2)函数,当expr1为NULL时,则数据返回默认值expre2 4 5 SELECT IFNULL(SUM(expr),0) -- 表示若 SUM()函数结果返回为NULL泽返回0 6 7 #第二种: 采用从 COALESCE(value,...) 函数, COALESCE 函数做用是返回传入参数中第一个非空的值 8 9 SELECT COALESCE(SUM(expr),0) 10 11 #第三种: 采用 case WHEN THEN WHEN THEN .. ELSE END 函数,注意 CASE WHEN 函数最后是以 END 结尾 12 13 SELECT CASE WHEN ISNULL(SUM(expr)) THEN 0 ELSE SUM(expr) END 14 15 #第四种: 在结果集中进行处理 16 17 #好比在Java在进行数据库交互查询以后,处理 SUM(expr) 的结果集,返回为null,进行==判断便可: 18 #if(result == null){result=0} return result; 19 #or if(result instanceof Integer){return result}else{return 0;}
附:SUM()与COUNT()的区别:class
SQL中AVG、COUNT、SUM、MAX等聚合函数对NULL值的处理:select
三、问题描述:从部门表(org)查询部门人数大于3人(employee)的全部部门的信息
解决方案:
SELECT o.* FROM org o WHERE STATUS=1 AND o.id IN (
SELECT temp.oid FROM (
SELECT COUNT(*) custNum,e.org_id oid FROM employee e WHERE e.state=1 GROUP BY oid HAVING custNum>0
) AS temp
)