数据库您现在的位置是:首页 > 博客日志 > 数据库

mysql 带条件取count记录数,SUM()函数按条件求和

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-10-10数据库 7 0关键字: mysql  

在做统计报表的时候,通常会用到一些复杂的统计功能,而不是简单的 count(*), sum(abc) 就可以的,这就用到了一些基于条件的统计功能。带条件取count记录数参考方法:统计sub_type

在做统计报表的时候,通常会用到一些复杂的统计功能,而不是简单的 count(*), sum(abc) 就可以的,这就用到了一些基于条件的统计功能。aiN无知

带条件取count记录数

参考方法:aiN无知

统计sub_type='REFUND_FEE’ 的记录数:aiN无知

方法一.select count(sub_type) from t where t.sub_type='REFUND_FEE’;aiN无知

方法二.select sum(if( B.sub_type='REFUND_FEE’ ,1,0)) from t;aiN无知

方法三.select count(B.sub_type=‘REFUND_FEE’ or null) from t;aiN无知

解释:aiN无知

当select B.sub_type=‘REFUND_FEE’ 时:aiN无知

如果sub_type为REFUND_FEE则返回1,aiN无知

不空且不为REFUND_FEE否则返回0,aiN无知

空时返回null。aiN无知

所以B.sub_type=‘REFUND_FEE’ or null 只返回sub_type=‘REFUND_FEE’ 的,其余的都返回null ,而count(列名)时是不会统计null的个数的aiN无知

注:count(*)会把null的个数也统计在内aiN无知


aiN无知

项目sqlaiN无知

SELECT subjectName,doctorName,count(1) AS sumNum,aiN无知

count(OVERTIMES>0 or null)as overNum            //只统计OVERTIMES>0的数aiN无知

from ht_personstreamaiN无知

WHERE 1=1aiN无知

and subjectId = #{subjectId}aiN无知

= #{startTime} ]]>        //mysql日期格式化aiN无知

GROUP BY  doctorId,subjectIdaiN无知

项目sql百分数保留两位小数aiN无知

SELECTaiN无知

subjectName as name,aiN无知

concat(convert(((SUM(OVERTIMES)/(count(1)+SUM(OVERTIMES)))*100 ),decimal(10,2)),'%') as VALUEaiN无知

FROM HT_PERSONSTREAMaiN无知

where isDeleted = 0aiN无知

GROUP BY subjectId,doctorIdaiN无知


aiN无知

//利用在一条语句中count出不同的条件,记录一下 ..aiN无知

SELECTaiN无知

SUM( goods_amount ) AS money,aiN无知

count( * ) AS num,aiN无知

count(if(pay_status=1,true,null)) AS success,aiN无知

count(if(pay_status=2,true,null)) AS fallaiN无知

FROM `tab_order_info` aiN无知

WHERE user_id = 11aiN无知

SUM()函数按条件求和

一般求和aiN无知

select sum(money) from user group by id;aiN无知

按条件求和aiN无知

select sum(if(type=1,money,0)) from user group by id;aiN无知


aiN无知

本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/blog/database/2022-10-10/1431.html

很赞哦! () 有话说 ()