SQL语句统计错误率
2018年的第一篇博客就以此作为开端吧 :D
最近在项目中碰到需要统计类似错误率之类的需求,原本这功能是之前做的,但是最近测的时候发现出了点问题,显示的结果不对。这就比较尴尬了。。。
于是就进行debug,发现之前写的查询SQL有问题,“不通用”,限制条件比较多,想的太复杂了点。
回归需求
当你想一个问题的时候想不到好的解决办法的时候或者不好实现某个需求的时候,你就应该回归需求的本身。
需求:统计某个得分点的错误率。
首先
因此就得先查出总数和错误数,总数使用count
就行,错误数单独的查简单,将错误数和总数合到一起展示不是那么容易想到。
最终的办法:使用sum
函数,参数带表达式
select count(*) total,sum(case when obtain=0 then 1 else 0 end) errorCounts...
from t_scoreItem
where ...
后来发现还有一种方式实现,使用union all
:
SELECT SUM(正确数)+SUM(错误数) AS 总记录数,SUM(正确数),SUM(错误数)
FROM (
SELECT COUNT(1) 正确数,0 错误数
FROM TB
WHERE STATUS=1
UNION ALL
SELECT 0 正确数,COUNT(1) 错误数
FROM TB
WHERE STATUS=0
) a
总结
本文是统计错误率的,由此可以拓展到查询其他状态的数据的数量占总数的比例,希望对读者有所帮助:D
http://huangxiutao.cn