mysql 根据时间,时间段,统计不同审批状态的占比

mysql 

SELECT 
IFNULL(ROUND((SUM(IF(psmd.approve_state='0',1,0)) / COUNT(psmd.approve_state is not null))*100,2),'0') refusal,-- 不同意
IFNULL(ROUND((SUM(IF(psmd.approve_state='1',1,0)) / COUNT(psmd.approve_state is not null))*100,2),'0') agree, -- 同意
IFNULL(ROUND((SUM(IF(psmd.approve_state='2',1,0)) / COUNT(psmd.approve_state is not null))*100,2),'0') notDelivered, -- 未送达
IFNULL(ROUND((SUM(IF(psmd.approve_state='-1',1,0)) / COUNT(psmd.approve_state is not null))*100,2),'0') pending -- 待处理
FROM 
pb_subscribe_message psm RIGHT JOIN  pb_subscribe_message_details psmd 
ON psm.subscribe_code=psmd.subscribe_code 
WHERE 

-- 下列条件,可以用mybatis的动态sql做if判断
DATE_FORMAT(psm.subscribe_date,'%Y-%m') between '2019-01' AND '2021-05'-- 时间范围
-- psm.subscribe_date LIKE '%2021-05%' -- 时间

-- DATE_FORMAT(psm.subscribe_date,'%Y') = DATE_FORMAT(now(),'%Y') -- 当前年份,查询今年全年
-- YEAR(psm.subscribe_date) = YEAR(now())  -- 当前年份,查询今年全年

mybatis 

 SELECT
        IFNULL(ROUND((SUM(IF(psmd.approve_state='0',1,0)) / COUNT(psmd.approve_state is not null))*100,2),'0') refusal,-- 不同意
        IFNULL(ROUND((SUM(IF(psmd.approve_state='1',1,0)) / COUNT(psmd.approve_state is not null))*100,2),'0') agree, -- 同意
        IFNULL(ROUND((SUM(IF(psmd.approve_state='2',1,0)) / COUNT(psmd.approve_state is not null))*100,2),'0') notDelivered, -- 未送达
        IFNULL(ROUND((SUM(IF(psmd.approve_state='-1',1,0)) / COUNT(psmd.approve_state is not null))*100,2),'0') pending -- 待处理
        FROM
        pb_subscribe_message psm RIGHT JOIN  pb_subscribe_message_details psmd
        ON psm.subscribe_code=psmd.subscribe_code
        WHERE
        <if test="date != null and date != '' and date != 'yearly'">
        -- 动态的时间格式,为了支持年,年月,年月日的查询
            DATE_FORMAT(psm.subscribe_date,#{dateFormat}) = #{date}
        </if>
        <if test="date == 'yearly'">
            DATE_FORMAT(psm.subscribe_date,'%Y') = DATE_FORMAT(now(),'%Y')
        </if>
        <if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
            DATE_FORMAT(psm.subscribe_date,#{startFormat}) between #{startDate} AND #{endDate}
        </if>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值