zoukankan      html  css  js  c++  java
  • 统计 存储过程

    CREATE DEFINER=`root`@`%` PROCEDURE `P_codestream_count_main`(IN `P_LINKID` varchar(32))
        COMMENT '国标码流分析统计主函数'
    BEGIN
        #Routine body goes here...
        BEGIN
            #声明接受的数据变量
            DECLARE P_CIVILCODE VARCHAR(255);
            #遍历数据结束标志
            DECLARE done TINYINT DEFAULT 0;
            #游标数据
            DECLARE civilcodes CURSOR FOR SELECT distinct civilcode FROM  ao_quality_count where taskno = P_LINKID;
            #将结束标志绑定到游标
            DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
            #打开游标
            OPEN civilcodes;
            #开始循环
            WHILE done<>1 DO
                #提取游标里的数据
                FETCH civilcodes INTO P_CIVILCODE;
                IF done<>1 THEN
                    CALL P_codestream_count_drs(P_LINKID,P_CIVILCODE);
                    CALL P_codestream_count_hds(P_LINKID,P_CIVILCODE);
                END IF;
            END WHILE;
            #关闭游标
            CLOSE civilcodes;
        END;
    END
    CREATE DEFINER=`root`@`%` PROCEDURE `P_codestream_count_drs`(IN `P_LINKID` varchar(64),IN `P_CIVILCODE` varchar(32))
        COMMENT '国标码流分析统计'
    BEGIN
        #DECLARE p_linkid VARCHAR(64) DEFAULT 0;#关联任务编码
        #DECLARE p_civilcode VARCHAR(32) DEFAULT 0;#区域编码
        DECLARE p_civilname VARCHAR(255) DEFAULT 0;#区域名称
        DECLARE p_ps INT(11) DEFAULT 0;#ps封装数
        DECLARE p_es INT(11) DEFAULT 0;#es封装数
        DECLARE p_ungbpacking INT(11) DEFAULT 0;#非国标封装数
        DECLARE p_h264 INT(11) DEFAULT 0;#h264编码数
        DECLARE p_h265 INT(11) DEFAULT 0;#h265编码数
        DECLARE p_svac INT(11) DEFAULT 0;#svac编码数
        DECLARE p_mpeg4 INT(11) DEFAULT 0;#mp4编码数
        DECLARE p_ungbencoding INT(11) DEFAULT 0;#非标编码数
        DECLARE p_total INT(11) DEFAULT 0;#总数
        DECLARE p_normal INT(11) DEFAULT 0;#合格数
        DECLARE p_normalrate DECIMAL(10,2) DEFAULT 0.00;#合格率
        
        #区域名称
        BEGIN
            SELECT areaName INTO p_civilname FROM ao_area WHERE areaId = P_CIVILCODE;
        END;
        #码流封装 ps
        BEGIN
            SELECT 
                COUNT(1) INTO p_ps 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND payload = 96;
        END;
        #码流封装 es
        BEGIN
            SELECT 
                COUNT(1) INTO p_es 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND payload IN (97,98,99,108);
        END;
        #码流封装 非国标封装数
        BEGIN
            SELECT 
                COUNT(1) INTO p_ungbpacking 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND payload NOT IN (96,97,98,99,108);
        END;
        #视频编码 h264编码数
        BEGIN
            SELECT 
                COUNT(1) INTO p_h264 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat = 0;
        END;
        #视频编码 h265编码数
        BEGIN
            SELECT 
                COUNT(1) INTO p_h265 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat = 1;
        END;
        #视频编码 svac编码数
        BEGIN
            SELECT 
                COUNT(1) INTO p_svac 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat = 3;
        END;
        #视频编码 mp4编码数
        BEGIN
            SELECT 
                COUNT(1) INTO p_mpeg4 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat = 2;
        END;
        #视频编码 非标编码数
        BEGIN
            SELECT 
                COUNT(1) INTO p_ungbencoding 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND videoformat NOT IN (0,1,2,3);
        END;
        #总数,合格数,合格率
        BEGIN
            SELECT 
                predicttotal,qualifiednum,qualifiedrate INTO p_total,p_normal,p_normalrate
            FROM 
                ao_quality_count
            WHERE 
                taskno = P_LINKID AND civilcode = P_CIVILCODE AND tasktype = 103;
        END;
        #删除,插入
        BEGIN
            DELETE FROM ao_gb_stream_statis WHERE linkid = P_LINKID AND civilcode = P_CIVILCODE;
            INSERT INTO ao_gb_stream_statis
            (
                linkid,civilcode,civilname,ps,es,ungbpacking,h264,h265,svac,mpeg4,ungbencoding,total,normal,normalrate,ctime
            )
            VALUES
            (
                P_LINKID,P_CIVILCODE,p_civilname,p_ps,p_es,p_ungbpacking,p_h264,p_h265,p_svac,p_mpeg4,p_ungbencoding,p_total,p_normal,p_normalrate,now()
            );
        END;
    END
    CREATE DEFINER=`root`@`%` PROCEDURE `P_codestream_count_hds`(IN `P_LINKID` varchar(64),IN `P_CIVILCODE` varchar(32))
        COMMENT '数据高清分析统计'
    BEGIN
        #Routine body goes here...
        DECLARE p_civilname VARCHAR(255) DEFAULT 0;#区域名称
        DECLARE p_hd INT(11) DEFAULT 0;#高清数
        DECLARE p_sd INT(11) DEFAULT 0;#标清数
        DECLARE p_sdbelow INT(11) DEFAULT 0;#低于标清
        DECLARE p_unknown INT(11) DEFAULT 0;#无法识别
        DECLARE p_total INT(11) DEFAULT 0;#总数
        DECLARE p_hdrate DECIMAL(10,2) DEFAULT 0.00;#高清占比
        
        #区域名称
        BEGIN
            SELECT areaName INTO p_civilname FROM ao_area WHERE areaId = P_CIVILCODE;
        END;
        #高清数
        BEGIN
            SELECT 
                COUNT(1) INTO p_hd 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND high > 96;
        END;
        #标清数
        BEGIN
            SELECT 
                COUNT(1) INTO p_sd 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND high = 96;
        END;
        #低于标清
        BEGIN
            SELECT 
                COUNT(1) INTO p_sdbelow 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND high < 96 AND high != 0;
        END;
        #无法识别
        BEGIN
            SELECT 
                COUNT(1) INTO p_unknown 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%') AND (high = 0 OR high = '');
        END;
        #总数
        BEGIN
            SELECT 
                COUNT(1) INTO p_total 
            FROM 
                ao_diag_result_stardand 
            WHERE 
                linkid = P_LINKID AND deviceid LIKE CONCAT(P_CIVILCODE,'%');
        END;
        #高清占比
        SET p_hdrate = IFNULL(TRUNCATE(p_hd / p_total * 100, 2),0);
        #删除,插入
        BEGIN
            DELETE FROM ao_hd_diagnosis_statis WHERE linkid = P_LINKID AND civilcode = P_CIVILCODE;
            INSERT INTO ao_hd_diagnosis_statis
            (
                linkid,civilcode,civilname,hd,sd,sdbelow,unknown,total,hdrate,ctime
            )
            VALUES
            (
                P_LINKID,P_CIVILCODE,p_civilname,p_hd,p_sd,p_sdbelow,p_unknown,p_total,p_hdrate,now()
            );
        END;
    END
  • 相关阅读:
    详解快速排序算法
    json和字符串、数组
    晚上回去搞这个
    json2使用方法
    mysql格式化时间函数:FROM_UNIXTIME
    java链接sqlite
    第七章 闭包
    产品家:你的闷骚,我的产品!
    关于json的格式
    JQuery选择器$()的工作原理浅析
  • 原文地址:https://www.cnblogs.com/zhaoatian/p/14283553.html
Copyright © 2011-2022 走看看