超累人的SQL

SELECT
        P.DC_CODE,
        P.DC_NAME,
        P.PARK_NAME,
        A.PARK_CODE,
        A.ALC_DATE,
        A.ALC_TOTAL_NUM,
        A.ALC_SYSTEM_NUM,
        CONCAT( TO_CHAR(ROUND( 100 * A.ALC_SYSTEM_NUM / A.ALC_TOTAL_NUM, 2 ),'fm9999999990.00'), '%' ) SYSTEM_PERCENT,
        A.ALC_USER_NUM,
        CONCAT( TO_CHAR(ROUND( 100 * A.ALC_USER_NUM / A.ALC_TOTAL_NUM, 2 ),'fm9999999990.00'), '%' ) USER_PERCENT,
        A.ALC_JUMP_NUM,
        CONCAT( TO_CHAR(ROUND( 100 * A.ALC_JUMP_NUM / A.ALC_TOTAL_NUM, 2 ),'fm9999999990.00'), '%' ) JUMP_PERCENT,
        CASE WHEN A.ALC_AVG_DURATION is NULL THEN 0 ELSE A.ALC_AVG_DURATION end ALC_AVG_DURATION
    FROM (
    SELECT
        PARK_CODE,
        ALC_DATE,
        COUNT( 1 ) ALC_TOTAL_NUM,
        SUM( CASE WHEN ALC_BY != 'SYS' THEN 1 ELSE 0 END ) ALC_USER_NUM,
        SUM( CASE WHEN OPER_LUWP_CODE = ALC_LUWP_CODE AND ALC_BY = 'SYS' THEN 1 ELSE 0 END ) ALC_SYSTEM_NUM,
            SUM( CASE WHEN (ALC_BY ='SYS' or ALC_BY IS NULL) AND OPER_LUWP_CODE != ALC_LUWP_CODE or ALC_LUWP_CODE IS null and OPER_LUWP_CODE is not null    THEN 1 ELSE 0 END )ALC_JUMP_NUM,
        ROUND(AVG(
        CEIL(( ALC_LUWP_TIME - SIGN_START_TIME ) * 24 * 60 )),0) ALC_AVG_DURATION 
    FROM
        (
    SELECT
        ALC_BY,
        ALC_LUWP_CODE,
        OPER_LUWP_CODE,
        ALC_LUWP_TIME,
        SIGN_START_TIME,
    CASE
        WHEN to_char( SIGN_START_TIME, 'hh24mi' ) BETWEEN '1030' 
        AND '2400' THEN
            to_char( SIGN_START_TIME, 'yyyy-mm-dd' ) 
            WHEN to_char( SIGN_START_TIME, 'hh24mi' ) BETWEEN '0000' 
            AND '1029' THEN
                to_char( SIGN_START_TIME - 1, 'yyyy-mm-dd' ) ELSE '' 
            END AS ALC_DATE,
            park_Code 
        FROM
            GQ_RPT_ACT_DETAIL 
        WHERE
            STATUS = 1 
            <if test="parkCode != null and parkCode != ''" > and PARK_CODE = #{parkCode}</if>
            
                AND SIGN_START_TIME 
                BETWEEN
                to_date(#{alcDateStart},'yy-mm-dd hh24:mi:ss')    
                AND
                to_date(#{alcDateEnd},'yy-mm-dd hh24:mi:ss')
        ) B 
        GROUP BY
        ALC_DATE,
        PARK_CODE) A
        LEFT JOIN GQ_BASE_PARK P ON A.PARK_CODE=P.PARK_CODE
                    WHERE P.STATUS=1 
        
        <if test="dcCode != null and dcCode != ''" > and DC_CODE = #{dcCode}</if>
        ORDER BY A.ALC_DATE DESC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值