大数据

Mysql 数据统计 百分比计算 2022-12-07

2022-12-06  本文已影响0人  阿然学编程
-- 统计
sum(CASE WHEN `state`=2 THEN 1 ELSE 0 END ) 
count(`state` = 2 or null)
count((`state` = 2 and `is_ok` = 1) or null)
count(`other_state` IN(1,3,4) or null)
count((`other_state` >= 1 and `other_state`<=3) or null)
-- 计算百分比
concat(round(count((`state` = 2 and `is_ok` = 1) or null) / count(`state` = 2 or null) *100 ,2),'%') 
-- 根据业务名称计算当前业务的 质检量,合格量,合格率,复义量,复义率,复核量,复核率
SELECT 
`name` as 业务名称,
concat(*) as 总量,
-- 统计数据量
-- sum(CASE WHEN `state`=2 THEN 1 ELSE 0 END ) as 质检量,
count(`state` = 2 or null) as 质检量,  
count((`state` = 2 and `is_ok` = 1) or null)  as 合格量,
-- 计算百分比
concat(round(count((`state` = 2 and `is_ok` = 1) or null) / count(`state` = 2 or null) *100 ,2),'%') as 合格率,

count(`is_people_checked` = 1 or null) as 复检量,

-- count(`other_state` IN(1,3,4) or null) as 复议量,
count((`other_state` >= 1 and `other_state`<=3) or null) as 复议量,

count((`other_state` >= 2 and `other_state`<=3) or null) as 复核量,

-- 三元判断如果相除>0 再去计算百分比,如果小于或者不等0 则默认 0%
IF(count((`other_state` >= 2 and `other_state`<=3) or null) / count((`other_state` >= 1 and `other_state`<=3) or null) > 0,
-- 计算百分比
concat(round(count((`other_state` >= 2 and `other_state`<=3) or null) / count((`other_state` >= 1 and `other_state`<=3) or null) *100 ,2),'%'),
concat(0,'%')) as 复核率

FROM set_audios_copy1

GROUP BY `name`;
image.png
SELECT
    a.`name` AS 配送员,
    b.`配送区县` AS `配送区`,
    DATE_FORMAT( b.`下单时间`, '%Y-%m' ) AS `日期`,
    b.`剔除标识` AS `剔标总量`,
    IFNULL( b.`剔除总5%`, 0 ) AS `剔标总量5%`,
    IFNULL( b.`成功关闭`, 0 ) AS `成功关闭`,
    IFNULL( b.`激活率`, concat( 0, '%' ) ) AS `激活率`,
    IFNULL( b.`充值>=50`, 0 ) AS `充值>=50`,
    IFNULL( b.`充值>=50率`, concat( 0, '%' ) ) AS `充值>=50率`,
    IFNULL( b.`充值>=100`, 0 ) AS `充值>=100`,
    IFNULL( b.`充值>=100率`, concat( 0, '%' ) ) AS `充值>=100率`,
    IFNULL( c.`携转`, 0 ) AS `携转`,
    IFNULL( c.`携转>=50`, 0 ) AS `携转>=50`,
    IFNULL( c.`携转>=50率`, concat( 0, '%' ) ) AS `携转>=50率`,
    IFNULL(
        concat(
            ROUND(
                ( b.`剔除标识` + IFNULL( c.`携转>=50`, 0 ) * 3 ) / IFNULL( b.`剔除总5%`, 0 ) * 100,
                2 
            ),
            '%' 
        ),
        concat( 0, '%' ) 
    ) AS `综合转化率`,
    IFNULL( d.`宽带`, 0 ) AS `宽带`,
    IFNULL( e.`PULS分母`, 0 ) AS `PULS分母`,
    IFNULL( f.`云PULS`, 0 ) AS `云PULS`,
    IFNULL(
        concat(
            round( IFNULL( f.`云PULS`, 0 ) / IFNULL( e.`PULS分母`, 0 ) * 100, 2 ),
            '%' 
        ),
        concat( 0, '%' ) 
    ) AS `PLUS占比50%`,
    IFNULL( g.`副卡`, 0 ) AS `副卡`,
    IFNULL(
        concat(
            round( IFNULL( g.`副卡`, 0 ) / IFNULL( e.`PULS分母`, 0 ) * 100, 2 ),
            '%' 
        ),
        concat( 0, '%' ) 
    ) AS `副卡率`,
    IFNULL( e.`已登`, 0 ) + IFNULL( e.`未登`, 0 ) AS `手厅分母`,
    IFNULL( e.`已登`, 0 ) AS `手厅分子`,
    IFNULL(
        concat(
            round(
                IFNULL( e.`已登`, 0 ) / ( IFNULL( e.`已登`, 0 ) + IFNULL( e.`未登`, 0 ) ) * 100,
                2 
            ),
            '%' 
        ),
        concat( 0, '%' ) 
    ) AS `手厅搭载率70%`,
    IFNULL( e.`5G分母`, 0 ) AS `5G分母`,
    IFNULL( e.`5G分子`, 0 ) AS `5G分子`,
    IFNULL(
        concat(
            round(
                IFNULL( e.`5G分子`, 0 ) / ( IFNULL( e.`5G分母`, 0 ) + IFNULL( e.`未登`, 0 ) ) * 100,
                2 
            ),
            '%' 
        ),
        concat( 0, '%' ) 
    ) AS `5G渗透率80%` 
FROM
    `dd_user` AS a
    LEFT JOIN (
    SELECT
        `配送区县`,
        `属网格ID`,
        `下单时间`,
        SUM( `剔除标识` = '' ) AS `剔除标识`,
        ROUND( SUM( `剔除标识` = '' ) - ( SUM( `剔除标识` = '' ) * 0.05 ) ) AS `剔除总5%`,
        SUM( `订单状态` = '成功关闭' ) AS `成功关闭`,
        concat( ROUND( SUM( `订单状态` = '成功关闭' ) / SUM( `剔除标识` = '' ) * 100, 2 ), '%' ) AS `激活率`,
        SUM( `累计充值金额` >= 50 ) AS `充值>=50`,
        concat( ROUND( SUM( `累计充值金额` >= 50 ) / SUM( `订单状态` = '成功关闭' ) * 100, 2 ), '%' ) AS `充值>=50率`,
        SUM( `累计充值金额` >= 100 ) AS `充值>=100`,
        concat( ROUND( SUM( `累计充值金额` >= 100 ) / SUM( `订单状态` = '成功关闭' ) * 100, 2 ), '%' ) AS `充值>=100率` 
    FROM
        `dd_综转明细` 
    WHERE
        DATE_FORMAT( `下单时间`, '%Y-%m' ) = '2023-02' 
    GROUP BY
        `属网格ID` 
    ) AS b ON a.`name` = b.`属网格ID`
    LEFT JOIN (
    SELECT
        SUM( `累计充值金额` >= 0 ) AS `携转`,
        SUM( `累计充值金额` >= 50 ) AS `携转>=50`,
        concat( round( SUM( `累计充值金额` >= 50 ) / SUM( `累计充值金额` >= 0 ) * 100, 2 ), '%' ) AS `携转>=50率`,
        `姓名` 
    FROM
        `dd_新融合携入` 
    WHERE
        DATE_FORMAT( `激活时间`, '%Y-%m' ) = '2023-02' 
    GROUP BY
        `姓名` 
    ) AS c ON a.`name` = c.`姓名`
    LEFT JOIN ( SELECT COUNT( `NAME` ) AS `宽带`, `NAME` FROM `dd_宽带明细` GROUP BY `NAME` ) AS d ON a.`name` = d.`NAME`
    LEFT JOIN (
    SELECT
        SUM( `订单状态` = '成功关闭' ) AS `PULS分母`,
        SUM( `手厅登录` = '已登' ) AS `已登`,
        SUM( `手厅登录` = '未登' ) AS `未登`,
        SUM( `5G叠加` <> '非目标用户' ) AS `5G分母`,
        SUM( `5G叠加` <> '非目标用户' AND `5G叠加` <> '未叠加' ) AS `5G分子`,
        `姓名` 
    FROM
        `dd_激活明细` 
    WHERE
        DATE_FORMAT( `激活时间`, '%Y-%m' ) = '2023-02' 
    GROUP BY
        `姓名` 
    ) AS e ON a.`name` = e.`姓名`
    LEFT JOIN ( SELECT COUNT( `配送员` ) AS `云PULS`, `配送员` FROM `dd_云plus` GROUP BY `配送员` ) AS f ON a.`name` = f.`配送员`
    LEFT JOIN ( SELECT SUM( `订单状态` = '成功关闭' ) AS `副卡`, `名称` FROM `dd_二次营销` WHERE DATE_FORMAT( `激活时间`, '%Y-%m' ) = '2023-02' GROUP BY `名称` ) AS g ON a.`name` = g.`名称` 
WHERE
    a.`delete_id` = 0 
    AND a.`terminal` = '手机端' 
    AND b.`配送区县` <> 'null' 
GROUP BY
    a.`name`
image.png
上一篇 下一篇

猜你喜欢

热点阅读