mysql中countif_在同⼀个sql语句中,统计不同条件的Count数
量
前⼏天帮同事优化了个SQL,原写法使⽤多个⼦查询这⾥不再重现了,⼤家都遇到过这样⼀种情况,在项⽬后期的维护中,
修改别⼈的SQL代码,超过30⾏的语句,多层⼦查询,读起来很坑,时间久的项⽬伴随着⼈员的流通,你可能就不知道原作者写这⼀堆的SQL是⼲什么⽤的,
当然碰到部分有注释习惯的朋友还是好点的,过长的SQL后期维护性与可读性很差,并且⼀般情况下性能也经不起推敲。
对于长的,复杂的SQL可以有很多种处理⽅式
1、沉到业务中取处理,拆分SQL
2、抽取公⽤统计属性,建⽴冗余表
上边简单列举这两种,不再展开,这⾥关注上边的问题处理
⽅案⼀
select id,
count(case when 属性 in (1,2) then 1 else 0 end) as sum1,
count(case when 属性 in (3) then 1 else 0 end) as sum2,
sum(case when 属性 in (4,5) then 1 else 0 end) as sum3
from 表名
group by id
⽅案⼆
SELECT
count( * ) AS num,
count(if(字段=1,true,null)) AS sum1,
count(if字段=2,true,null)) AS sum2
FROM 表名
WHERE 其他条件
还有其他实现⽅式,这⾥不再展开,有兴趣的朋友⼀起讨论呀( ⊙ o ⊙ )!sql语句查询不包含
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论