refactor: 优化报表 SQL 性能并规范化标识符

This commit is contained in:
2026-06-25 15:37:58 +08:00
parent 5a5c08d823
commit 3c281956c7
2 changed files with 178 additions and 183 deletions
+171 -183
View File
@@ -1,6 +1,7 @@
# Update: 2026/04/28 17:54:00
# Update: 2026/06/25 15:33:00
SET GLOBAL wait_timeout = 86400;
SET GLOBAL innodb_buffer_pool_size = 1073741824;
DROP TABLE IF EXISTS `4G`;
DROP TABLE IF EXISTS `5G`;
DROP TABLE IF EXISTS `4G_Date`;
@@ -22,8 +23,8 @@ DROP TABLE IF EXISTS `5G_MAX_IDX`;
DROP TABLE IF EXISTS `5G日均流量`;
DROP TABLE IF EXISTS `5G_结果表`;
UPDATE 4G_UD SET
`上下行总流量_GB` = IFNULL(`上下行总流量_GB`,0),
UPDATE `4G_UD` SET
`上下行总流量_GB` = IFNULL(`上下行总流量_GB`,0),
`ERAB流量` = IFNULL(`ERAB流量`,0),
`上行流量_GB` = IFNULL(`上行流量_GB`,0),
`下行流量_GB` = IFNULL(`下行流量_GB`,0),
@@ -33,8 +34,8 @@ UPDATE 4G_UD SET
`下行PDSCH利用率` = IFNULL(`下行PDSCH利用率`,0),
`PDCCH资源利用率` = IFNULL(`PDCCH资源利用率`,0),
`用户面最大激活UE数` = IFNULL(`用户面最大激活UE数`,0);
UPDATE 5G_UD SET
UPDATE `5G_UD` SET
`5G上下行总流量_GB` = IFNULL(`5G上下行总流量_GB`,0),
`5G上行流量_GB` = IFNULL(`5G上行流量_GB`,0),
`5G下行流量_GB` = IFNULL(`5G下行流量_GB`,0),
@@ -52,8 +53,8 @@ UPDATE 5G_UD SET
CREATE TABLE `4G` AS SELECT * FROM `4G_UD`;
CREATE TABLE `5G` AS SELECT * FROM `5G_UD`;
UPDATE 4G SET `日期时间` = DATE_FORMAT(DATE_ADD(`日期时间`,INTERVAL 8 HOUR), '%Y-%m-%d %H:%i:%s');
UPDATE 5G SET `日期时间` = DATE_FORMAT(DATE_ADD(`日期时间`,INTERVAL 8 HOUR), '%Y-%m-%d %H:%i:%s');
UPDATE `4G` SET `日期时间` = DATE_FORMAT(DATE_ADD(`日期时间`,INTERVAL 8 HOUR), '%Y-%m-%d %H:%i:%s');
UPDATE `5G` SET `日期时间` = DATE_FORMAT(DATE_ADD(`日期时间`,INTERVAL 8 HOUR), '%Y-%m-%d %H:%i:%s');
ALTER TABLE `4G`
ADD COLUMN `日期` date NULL FIRST,
@@ -98,18 +99,18 @@ MODIFY COLUMN `小区上行RLC_SDU字节数_MByte` float,
MODIFY COLUMN `PDCCH信道动态CCE占用率` float,
MODIFY COLUMN `平均单Flow流量_MB` float;
UPDATE 4G SET `日期` = DATE_FORMAT(`日期时间`, '%Y-%m-%d'), CGI = CONCAT("460-00-",eNodeBId,"-", cellLocalId);
UPDATE 5G SET gNBplmn = "460-00" WHERE gNBplmn IS NULL;
UPDATE 5G SET `日期` = DATE_FORMAT(`日期时间`, '%Y-%m-%d'), NCGI = CONCAT(gNBplmn, "-",gNBId,"-", cellLocalId);
UPDATE `4G` SET `日期` = DATE_FORMAT(`日期时间`, '%Y-%m-%d'), `CGI` = CONCAT("460-00-",`eNodeBId`,"-",`cellLocalId`);
UPDATE `5G` SET `gNBplmn` = "460-00" WHERE `gNBplmn` IS NULL;
UPDATE `5G` SET `日期` = DATE_FORMAT(`日期时间`, '%Y-%m-%d'), `NCGI` = CONCAT(`gNBplmn`,"-",`gNBId`,"-",`cellLocalId`);
ALTER TABLE 4G
ALTER TABLE `4G`
ADD INDEX(`日期`),
ADD INDEX(`日期时间`),
ADD INDEX(`CGI`),
ADD INDEX `TC`(`日期时间`, `CGI`),
ADD INDEX `DC`(`日期`, `CGI`);
ALTER TABLE 5G
ALTER TABLE `5G`
ADD INDEX(`日期`),
ADD INDEX(`日期时间`),
ADD INDEX(`NCGI`),
@@ -120,10 +121,10 @@ ADD INDEX `DC`(`日期`, `NCGI`);
CREATE TEMPORARY TABLE IF NOT EXISTS `CCE_MAX_IDX`(
SELECT
`日期`,
CGI,
MAX( `PDCCH资源利用率`) AS `PDCCH资源利用率_忙时`
FROM 4G
GROUP BY `日期`, CGI
`CGI`,
MAX(`PDCCH资源利用率`) AS `PDCCH资源利用率_忙时`
FROM `4G`
GROUP BY `日期`, `CGI`
);
ALTER TABLE `CCE_MAX_IDX`
@@ -131,20 +132,20 @@ ADD COLUMN `日期时间` datetime,
ADD INDEX `DC`(`日期`, `CGI`, `PDCCH资源利用率_忙时`),
ADD INDEX `TC`(`日期时间`, `CGI`);
UPDATE `CCE_MAX_IDX` INNER JOIN 4G
UPDATE `CCE_MAX_IDX` INNER JOIN `4G`
ON
`CCE_MAX_IDX`.`日期` = 4G.`日期` AND
`CCE_MAX_IDX`.CGI=4G.CGI AND
`CCE_MAX_IDX`.`PDCCH资源利用率_忙时`=4G.`PDCCH资源利用率`
`CCE_MAX_IDX`.`日期` = `4G`.`日期` AND
`CCE_MAX_IDX`.`CGI` = `4G`.`CGI` AND
`CCE_MAX_IDX`.`PDCCH资源利用率_忙时` = `4G`.`PDCCH资源利用率`
SET
`CCE_MAX_IDX`.`日期时间`=4G.`日期时间`;
`CCE_MAX_IDX`.`日期时间` = `4G`.`日期时间`;
CREATE TEMPORARY TABLE IF NOT EXISTS `CCE_MAX` (
SELECT 4G.*
FROM `CCE_MAX_IDX` LEFT JOIN 4G
ON `CCE_MAX_IDX`.CGI=4G.CGI AND
`CCE_MAX_IDX`.`日期时间`=4G.`日期时间`
SELECT `4G`.*
FROM `CCE_MAX_IDX` LEFT JOIN `4G`
ON `CCE_MAX_IDX`.`CGI` = `4G`.`CGI` AND
`CCE_MAX_IDX`.`日期时间` = `4G`.`日期时间`
);
DROP TABLE IF EXISTS `CCE_MAX_IDX`;
@@ -152,10 +153,10 @@ DROP TABLE IF EXISTS `CCE_MAX_IDX`;
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX_IDX`(
SELECT
`日期`,
CGI,
MAX( `上行PUSCH利用率`) AS `上行PUSCH利用率_忙时`
FROM 4G
GROUP BY `日期`, CGI
`CGI`,
MAX(`上行PUSCH利用率`) AS `上行PUSCH利用率_忙时`
FROM `4G`
GROUP BY `日期`, `CGI`
);
ALTER TABLE `ULPRB_MAX_IDX`
@@ -163,43 +164,46 @@ ADD COLUMN `日期时间` datetime,
ADD INDEX `DC`(`日期`, `CGI`, `上行PUSCH利用率_忙时`),
ADD INDEX `TC`(`日期时间`, `CGI`);
UPDATE `ULPRB_MAX_IDX` INNER JOIN 4G
UPDATE `ULPRB_MAX_IDX` INNER JOIN `4G`
ON
`ULPRB_MAX_IDX`.`日期` = 4G.`日期` AND
`ULPRB_MAX_IDX`.CGI=4G.CGI AND
`ULPRB_MAX_IDX`.`上行PUSCH利用率_忙时`=4G.`上行PUSCH利用率`
`ULPRB_MAX_IDX`.`日期` = `4G`.`日期` AND
`ULPRB_MAX_IDX`.`CGI` = `4G`.`CGI` AND
`ULPRB_MAX_IDX`.`上行PUSCH利用率_忙时` = `4G`.`上行PUSCH利用率`
SET
`ULPRB_MAX_IDX`.`日期时间`=4G.`日期时间`;
`ULPRB_MAX_IDX`.`日期时间` = `4G`.`日期时间`;
CREATE TABLE IF NOT EXISTS `ULPRB_MAX` (
SELECT 4G.*
FROM `ULPRB_MAX_IDX` LEFT JOIN 4G
ON `ULPRB_MAX_IDX`.CGI=4G.CGI AND
`ULPRB_MAX_IDX`.`日期时间`=4G.`日期时间`
SELECT `4G`.*
FROM `ULPRB_MAX_IDX` LEFT JOIN `4G`
ON `ULPRB_MAX_IDX`.`CGI` = `4G`.`CGI` AND
`ULPRB_MAX_IDX`.`日期时间` = `4G`.`日期时间`
);
DROP TABLE IF EXISTS `ULPRB_MAX_IDX`;
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX_IDX`(SELECT `日期`, CGI, MAX( `下行PDSCH利用率`) AS `下行PDSCH利用率_忙时` FROM 4G GROUP BY `日期`, CGI);
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX_IDX`(
SELECT `日期`, `CGI`, MAX(`下行PDSCH利用率`) AS `下行PDSCH利用率_忙时`
FROM `4G` GROUP BY `日期`, `CGI`
);
ALTER TABLE `DLPRB_MAX_IDX`
ADD COLUMN `日期时间` datetime,
ADD INDEX `DC`(`日期`, `CGI`, `下行PDSCH利用率_忙时`),
ADD INDEX `TC`(`日期时间`, `CGI`);
UPDATE `DLPRB_MAX_IDX` INNER JOIN 4G
UPDATE `DLPRB_MAX_IDX` INNER JOIN `4G`
ON
`DLPRB_MAX_IDX`.`日期` = 4G.`日期` AND
`DLPRB_MAX_IDX`.CGI=4G.CGI AND
`DLPRB_MAX_IDX`.`下行PDSCH利用率_忙时`=4G.`下行PDSCH利用率`
`DLPRB_MAX_IDX`.`日期` = `4G`.`日期` AND
`DLPRB_MAX_IDX`.`CGI` = `4G`.`CGI` AND
`DLPRB_MAX_IDX`.`下行PDSCH利用率_忙时` = `4G`.`下行PDSCH利用率`
SET
`DLPRB_MAX_IDX`.`日期时间`=4G.`日期时间`;
`DLPRB_MAX_IDX`.`日期时间` = `4G`.`日期时间`;
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX` (
SELECT 4G.*
FROM `DLPRB_MAX_IDX` LEFT JOIN 4G
ON `DLPRB_MAX_IDX`.CGI=4G.CGI AND
`DLPRB_MAX_IDX`.`日期时间`=4G.`日期时间`
SELECT `4G`.*
FROM `DLPRB_MAX_IDX` LEFT JOIN `4G`
ON `DLPRB_MAX_IDX`.`CGI` = `4G`.`CGI` AND
`DLPRB_MAX_IDX`.`日期时间` = `4G`.`日期时间`
);
DROP TABLE IF EXISTS `DLPRB_MAX_IDX`;
@@ -209,81 +213,75 @@ ALTER TABLE `DLPRB_MAX` ADD INDEX `DC`(`日期`, `CGI`);
ALTER TABLE `ULPRB_MAX` ADD INDEX `DC`(`日期`, `CGI`);
CREATE TEMPORARY TABLE IF NOT EXISTS `4G_Date` (SELECT `日期`, CGI FROM 4G GROUP BY `日期`, CGI);
ALTER TABLE `4G_Date` ADD INDEX `DC`(`日期`, CGI);
CREATE TEMPORARY TABLE IF NOT EXISTS `4G_Date` (SELECT `日期`, `CGI` FROM `4G` GROUP BY `日期`, `CGI`);
ALTER TABLE `4G_Date` ADD INDEX `DC`(`日期`, `CGI`);
CREATE TEMPORARY TABLE IF NOT EXISTS `4G_MAX_IDX` (
SELECT
4G_Date.`日期`,
4G_Date.CGI,
GREATEST(`ULPRB_MAX`.`上行PUSCH利用率`, DLPRB_MAX.`下行PDSCH利用率`,CCE_MAX.`PDCCH资源利用率`) AS `最大值`
`4G_Date`.`日期`,
`4G_Date`.`CGI`,
GREATEST(`ULPRB_MAX`.`上行PUSCH利用率`, `DLPRB_MAX`.`下行PDSCH利用率`, `CCE_MAX`.`PDCCH资源利用率`) AS `最大值`
FROM
4G_Date
`4G_Date`
INNER JOIN
DLPRB_MAX
`DLPRB_MAX`
ON
4G_Date.`日期` = DLPRB_MAX.`日期` AND
4G_Date.CGI = DLPRB_MAX.CGI
`4G_Date`.`日期` = `DLPRB_MAX`.`日期` AND
`4G_Date`.`CGI` = `DLPRB_MAX`.`CGI`
INNER JOIN
CCE_MAX
`CCE_MAX`
ON
4G_Date.`日期` = CCE_MAX.`日期` AND
4G_Date.CGI = CCE_MAX.CGI
`4G_Date`.`日期` = `CCE_MAX`.`日期` AND
`4G_Date`.`CGI` = `CCE_MAX`.`CGI`
INNER JOIN
ULPRB_MAX
`ULPRB_MAX`
ON
4G_Date.`日期` = ULPRB_MAX.`日期` AND
4G_Date.CGI = ULPRB_MAX.CGI
`4G_Date`.`日期` = `ULPRB_MAX`.`日期` AND
`4G_Date`.`CGI` = `ULPRB_MAX`.`CGI`
);
DROP TABLE IF EXISTS `4G_Date`;
ALTER TABLE `4G_MAX_IDX` ADD INDEX `DC`(`日期`, CGI), ADD INDEX (`最大值`);
ALTER TABLE `4G_MAX_IDX` ADD INDEX `DC`(`日期`, `CGI`), ADD INDEX (`最大值`);
CREATE TABLE IF NOT EXISTS `4G_MAX` (
SELECT * FROM 4G LIMIT 0
SELECT * FROM `4G` LIMIT 0
);
ALTER TABLE `4G_MAX` ADD INDEX (`日期`), ADD INDEX (`CGI`), ADD INDEX `DC` (`日期`,CGI), ADD INDEX `idx`(`CGI`, `基站名称`, `小区名称`);
ALTER TABLE DLPRB_MAX ADD COLUMN `insert` INT NOT NULL DEFAULT 0;
ALTER TABLE CCE_MAX ADD COLUMN `insert` INT NOT NULL DEFAULT 0;
ALTER TABLE `4G_MAX` ADD INDEX (`日期`), ADD INDEX (`CGI`), ADD INDEX `DC` (`日期`, `CGI`), ADD INDEX `idx`(`CGI`, `基站名称`, `小区名称`);
TRUNCATE `4G_MAX`;
INSERT INTO `4G_MAX`
SELECT ULPRB_MAX.* FROM ULPRB_MAX INNER JOIN `4G_MAX_IDX`
SELECT `ULPRB_MAX`.* FROM `ULPRB_MAX` INNER JOIN `4G_MAX_IDX`
ON
ULPRB_MAX.`日期` = 4G_MAX_IDX.`日期` AND
ULPRB_MAX.CGI = 4G_MAX_IDX.`CGI` AND
ULPRB_MAX.`上行PUSCH利用率` = 4G_MAX_IDX.`最大值`;
`ULPRB_MAX`.`日期` = `4G_MAX_IDX`.`日期` AND
`ULPRB_MAX`.`CGI` = `4G_MAX_IDX`.`CGI` AND
`ULPRB_MAX`.`上行PUSCH利用率` = `4G_MAX_IDX`.`最大值`;
DELETE FROM DLPRB_MAX WHERE `日期` IS NULL;
UPDATE DLPRB_MAX INNER JOIN 4G_MAX ON DLPRB_MAX.`日期` = 4G_MAX.`日期` AND DLPRB_MAX.CGI = 4G_MAX.CGI SET DLPRB_MAX.`insert` = 1;
ALTER TABLE DLPRB_MAX ADD INDEX (`insert`);
DELETE FROM DLPRB_MAX WHERE `insert` = 1;
ALTER TABLE DLPRB_MAX DROP COLUMN `insert`;
DELETE FROM `DLPRB_MAX` WHERE `日期` IS NULL;
INSERT INTO `4G_MAX`
SELECT DLPRB_MAX.* FROM DLPRB_MAX INNER JOIN `4G_MAX_IDX`
SELECT `DLPRB_MAX`.* FROM `DLPRB_MAX` INNER JOIN `4G_MAX_IDX`
ON
DLPRB_MAX.`日期` = 4G_MAX_IDX.`日期` AND
DLPRB_MAX.CGI = 4G_MAX_IDX.`CGI` AND
DLPRB_MAX.`下行PDSCH利用率` = 4G_MAX_IDX.`最大值`;
`DLPRB_MAX`.`日期` = `4G_MAX_IDX`.`日期` AND
`DLPRB_MAX`.`CGI` = `4G_MAX_IDX`.`CGI` AND
`DLPRB_MAX`.`下行PDSCH利用率` = `4G_MAX_IDX`.`最大值`
WHERE NOT EXISTS (
SELECT 1 FROM `4G_MAX`
WHERE `4G_MAX`.`日期` = `DLPRB_MAX`.`日期`
AND `4G_MAX`.`CGI` = `DLPRB_MAX`.`CGI`
);
DELETE FROM CCE_MAX WHERE `日期` IS NULL;
UPDATE CCE_MAX INNER JOIN 4G_MAX ON CCE_MAX.`日期` = 4G_MAX.`日期` AND CCE_MAX.CGI = 4G_MAX.CGI SET CCE_MAX.`insert` = 1;
ALTER TABLE CCE_MAX ADD INDEX (`insert`);
DELETE FROM CCE_MAX WHERE `insert` = 1;
ALTER TABLE CCE_MAX DROP COLUMN `insert`;
DELETE FROM `CCE_MAX` WHERE `日期` IS NULL;
INSERT INTO `4G_MAX`
SELECT CCE_MAX.* FROM CCE_MAX INNER JOIN `4G_MAX_IDX`
SELECT `CCE_MAX`.* FROM `CCE_MAX` INNER JOIN `4G_MAX_IDX`
ON
CCE_MAX.`日期` = 4G_MAX_IDX.`日期` AND
CCE_MAX.CGI = 4G_MAX_IDX.`CGI` AND
CCE_MAX.`PDCCH资源利用率` = 4G_MAX_IDX.`最大值`;
`CCE_MAX`.`日期` = `4G_MAX_IDX`.`日期` AND
`CCE_MAX`.`CGI` = `4G_MAX_IDX`.`CGI` AND
`CCE_MAX`.`PDCCH资源利用率` = `4G_MAX_IDX`.`最大值`
WHERE NOT EXISTS (
SELECT 1 FROM `4G_MAX`
WHERE `4G_MAX`.`日期` = `CCE_MAX`.`日期`
AND `4G_MAX`.`CGI` = `CCE_MAX`.`CGI`
);
DROP TABLE IF EXISTS `CCE_MAX`;
@@ -291,18 +289,16 @@ DROP TABLE IF EXISTS `ULPRB_MAX`;
DROP TABLE IF EXISTS `DLPRB_MAX`;
DROP TABLE IF EXISTS `4G_MAX_IDX`;
CREATE TEMPORARY TABLE IF NOT EXISTS `日流量`(SELECT `日期`,CGI, SUM(`上下行总流量_GB`) AS `日流量` FROM 4G GROUP BY `日期`,CGI);
CREATE TEMPORARY TABLE IF NOT EXISTS `日流量`(SELECT `日期`, `CGI`, SUM(`上下行总流量_GB`) AS `日流量` FROM `4G` GROUP BY `日期`, `CGI`);
ALTER TABLE `日流量` ADD INDEX (`CGI`);
DROP TABLE IF EXISTS `4G日均流量`;
CREATE TEMPORARY TABLE IF NOT EXISTS `4G日均流量` (
SELECT CGI, AVG(`日流量`) AS `日均流量`, COUNT(`日期`) AS `流量有效天数` FROM `日流量` WHERE `日流量` > 0 GROUP BY CGI
SELECT `CGI`, AVG(`日流量`) AS `日均流量`, COUNT(`日期`) AS `流量有效天数` FROM `日流量` WHERE `日流量` > 0 GROUP BY `CGI`
);
CREATE TABLE IF NOT EXISTS `4G_结果表` (
SELECT CGI, `基站名称`, `小区名称`,
SELECT `CGI`, `基站名称`, `小区名称`,
ROUND(AVG(`上下行总流量_GB`),6) AS `自忙时流量(GB)`,
ROUND(AVG(`ERAB流量`),6) AS `ERAB流量`,
ROUND(AVG(`上行流量_GB`),6) AS `上行流量(GB)`,
@@ -313,13 +309,13 @@ CREATE TABLE IF NOT EXISTS `4G_结果表` (
ROUND(AVG(`下行PDSCH利用率`),6) AS `下行PDSCH利用率`,
ROUND(AVG(`PDCCH资源利用率`),6) AS `PDCCH资源利用率`,
ROUND(AVG(`用户面最大激活UE数`),6) AS `用户面最大激活UE数`
FROM 4G_MAX GROUP BY CGI, `基站名称`, `小区名称`
FROM `4G_MAX` GROUP BY `CGI`, `基站名称`, `小区名称`
);
DROP TABLE IF EXISTS `4G_MAX`;
ALTER TABLE `4G_结果表` ADD COLUMN `日均流量(GB)` DOUBLE AFTER `小区名称`, ADD INDEX (`CGI`);
ALTER TABLE `4G日均流量` ADD INDEX (CGI);
ALTER TABLE `4G日均流量` ADD INDEX (`CGI`);
UPDATE `4G_结果表` INNER JOIN `4G日均流量`
ON `4G_结果表`.CGI=`4G日均流量`.CGI
ON `4G_结果表`.`CGI` = `4G日均流量`.`CGI`
SET `4G_结果表`.`日均流量(GB)` = ROUND(`4G日均流量`.`日均流量`,6);
DROP TABLE IF EXISTS `日流量`;
@@ -332,10 +328,10 @@ DROP TABLE IF EXISTS `4G`;
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX_IDX`(
SELECT
`日期`,
NCGI,
`NCGI`,
MAX(`上行PRB平均利用率`) AS `上行PRB平均利用率_忙时`
FROM 5G
GROUP BY `日期`, NCGI
FROM `5G`
GROUP BY `日期`, `NCGI`
);
ALTER TABLE `ULPRB_MAX_IDX`
@@ -343,29 +339,28 @@ ADD COLUMN `日期时间` datetime,
ADD INDEX `DC`(`日期`, `NCGI`, `上行PRB平均利用率_忙时`),
ADD INDEX `TC`(`日期时间`, `NCGI`);
UPDATE `ULPRB_MAX_IDX` INNER JOIN 5G
UPDATE `ULPRB_MAX_IDX` INNER JOIN `5G`
ON
`ULPRB_MAX_IDX`.`日期` = 5G.`日期` AND
`ULPRB_MAX_IDX`.NCGI=5G.NCGI AND
`ULPRB_MAX_IDX`.`上行PRB平均利用率_忙时`=5G.`上行PRB平均利用率`
`ULPRB_MAX_IDX`.`日期` = `5G`.`日期` AND
`ULPRB_MAX_IDX`.`NCGI` = `5G`.`NCGI` AND
`ULPRB_MAX_IDX`.`上行PRB平均利用率_忙时` = `5G`.`上行PRB平均利用率`
SET
`ULPRB_MAX_IDX`.`日期时间`=5G.`日期时间`;
`ULPRB_MAX_IDX`.`日期时间` = `5G`.`日期时间`;
CREATE TEMPORARY TABLE IF NOT EXISTS `ULPRB_MAX` (
SELECT 5G.*
FROM `ULPRB_MAX_IDX` LEFT JOIN 5G
ON `ULPRB_MAX_IDX`.NCGI=5G.NCGI AND
`ULPRB_MAX_IDX`.`日期时间`=5G.`日期时间`
SELECT `5G`.*
FROM `ULPRB_MAX_IDX` LEFT JOIN `5G`
ON `ULPRB_MAX_IDX`.`NCGI` = `5G`.`NCGI` AND
`ULPRB_MAX_IDX`.`日期时间` = `5G`.`日期时间`
);
# 下行PRB MAX表
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX_IDX`(
SELECT
`日期`,
NCGI,
MAX( `下行PRB平均利用率`) AS `下行PRB平均利用率_忙时`
FROM 5G
GROUP BY `日期`, NCGI
`NCGI`,
MAX(`下行PRB平均利用率`) AS `下行PRB平均利用率_忙时`
FROM `5G`
GROUP BY `日期`, `NCGI`
);
ALTER TABLE `DLPRB_MAX_IDX`
@@ -373,96 +368,92 @@ ADD COLUMN `日期时间` datetime,
ADD INDEX `DC`(`日期`, `NCGI`, `下行PRB平均利用率_忙时`),
ADD INDEX `TC`(`日期时间`, `NCGI`);
UPDATE `DLPRB_MAX_IDX` INNER JOIN 5G
UPDATE `DLPRB_MAX_IDX` INNER JOIN `5G`
ON
`DLPRB_MAX_IDX`.`日期` = 5G.`日期` AND
`DLPRB_MAX_IDX`.NCGI=5G.NCGI AND
`DLPRB_MAX_IDX`.`下行PRB平均利用率_忙时`=5G.`下行PRB平均利用率`
`DLPRB_MAX_IDX`.`日期` = `5G`.`日期` AND
`DLPRB_MAX_IDX`.`NCGI` = `5G`.`NCGI` AND
`DLPRB_MAX_IDX`.`下行PRB平均利用率_忙时` = `5G`.`下行PRB平均利用率`
SET
`DLPRB_MAX_IDX`.`日期时间`=5G.`日期时间`;
`DLPRB_MAX_IDX`.`日期时间` = `5G`.`日期时间`;
CREATE TEMPORARY TABLE IF NOT EXISTS `DLPRB_MAX` (
SELECT 5G.*
FROM `DLPRB_MAX_IDX` LEFT JOIN 5G
ON `DLPRB_MAX_IDX`.NCGI=5G.NCGI AND
`DLPRB_MAX_IDX`.`日期时间`=5G.`日期时间`
SELECT `5G`.*
FROM `DLPRB_MAX_IDX` LEFT JOIN `5G`
ON `DLPRB_MAX_IDX`.`NCGI` = `5G`.`NCGI` AND
`DLPRB_MAX_IDX`.`日期时间` = `5G`.`日期时间`
);
DROP TABLE IF EXISTS `DLPRB_MAX_IDX`;
ALTER TABLE `DLPRB_MAX` ADD INDEX `DC`(`日期`, `NCGI`);
ALTER TABLE `ULPRB_MAX` ADD INDEX `DC`(`日期`, `NCGI`);
# 5G 统计MAX数据
DROP TABLE IF EXISTS `5G_Date`;
CREATE TEMPORARY TABLE IF NOT EXISTS `5G_Date` (
SELECT `日期`, NCGI FROM 5G GROUP BY `日期`, NCGI
SELECT `日期`, `NCGI` FROM `5G` GROUP BY `日期`, `NCGI`
);
ALTER TABLE `5G_Date` ADD INDEX `DC`(`日期`, NCGI);
ALTER TABLE `5G_Date` ADD INDEX `DC`(`日期`, `NCGI`);
CREATE TEMPORARY TABLE IF NOT EXISTS `5G_MAX_IDX` (
SELECT
5G_Date.`日期`,
5G_Date.NCGI,
GREATEST(ULPRB_MAX.`上行PRB平均利用率`, DLPRB_MAX.`下行PRB平均利用率`) AS `最大值`
`5G_Date`.`日期`,
`5G_Date`.`NCGI`,
GREATEST(`ULPRB_MAX`.`上行PRB平均利用率`, `DLPRB_MAX`.`下行PRB平均利用率`) AS `最大值`
FROM
5G_Date
`5G_Date`
INNER JOIN
DLPRB_MAX
`DLPRB_MAX`
ON
5G_Date.`日期` = DLPRB_MAX.`日期` AND
5G_Date.NCGI = DLPRB_MAX.NCGI
`5G_Date`.`日期` = `DLPRB_MAX`.`日期` AND
`5G_Date`.`NCGI` = `DLPRB_MAX`.`NCGI`
INNER JOIN
ULPRB_MAX
`ULPRB_MAX`
ON
5G_Date.`日期` = ULPRB_MAX.`日期` AND
5G_Date.NCGI = ULPRB_MAX.NCGI
`5G_Date`.`日期` = `ULPRB_MAX`.`日期` AND
`5G_Date`.`NCGI` = `ULPRB_MAX`.`NCGI`
);
DROP TABLE IF EXISTS `5G_Date`;
ALTER TABLE `5G_MAX_IDX` ADD INDEX `DC`(`日期`, NCGI), ADD INDEX (`最大值`);
ALTER TABLE `5G_MAX_IDX` ADD INDEX `DC`(`日期`, `NCGI`), ADD INDEX (`最大值`);
CREATE TABLE IF NOT EXISTS `5G_MAX` (
SELECT * FROM 5G LIMIT 0
SELECT * FROM `5G` LIMIT 0
);
ALTER TABLE `5G_MAX` ADD INDEX (`日期`), ADD INDEX (`NCGI`), ADD INDEX `DC` (`日期`, `NCGI`), ADD INDEX `idx`(`NCGI`, `CU小区配置名称`);
ALTER TABLE `5G_MAX` ADD INDEX (`日期`), ADD INDEX (`NCGI`), ADD INDEX `DC` (`日期`,NCGI), ADD INDEX `idx`(`NCGI`, `CU小区配置名称`);
ALTER TABLE DLPRB_MAX ADD COLUMN `insert` INT NOT NULL DEFAULT 0;
TRUNCATE `5G_MAX`;
INSERT INTO `5G_MAX`
SELECT ULPRB_MAX.* FROM ULPRB_MAX INNER JOIN `5G_MAX_IDX`
SELECT `ULPRB_MAX`.* FROM `ULPRB_MAX` INNER JOIN `5G_MAX_IDX`
ON
ULPRB_MAX.`日期` = 5G_MAX_IDX.`日期` AND
ULPRB_MAX.NCGI = 5G_MAX_IDX.`NCGI` AND
ULPRB_MAX.`上行PRB平均利用率` = 5G_MAX_IDX.`最大值`;
`ULPRB_MAX`.`日期` = `5G_MAX_IDX`.`日期` AND
`ULPRB_MAX`.`NCGI` = `5G_MAX_IDX`.`NCGI` AND
`ULPRB_MAX`.`上行PRB平均利用率` = `5G_MAX_IDX`.`最大值`;
DELETE FROM DLPRB_MAX WHERE `日期` IS NULL;
UPDATE DLPRB_MAX INNER JOIN 5G_MAX ON DLPRB_MAX.`日期` = 5G_MAX.`日期` AND DLPRB_MAX.NCGI = 5G_MAX.NCGI SET DLPRB_MAX.`insert` = 1;
ALTER TABLE DLPRB_MAX ADD INDEX (`insert`);
DELETE FROM DLPRB_MAX WHERE `insert` = 1;
ALTER TABLE DLPRB_MAX DROP COLUMN `insert`;
DELETE FROM `DLPRB_MAX` WHERE `日期` IS NULL;
INSERT INTO `5G_MAX`
SELECT DLPRB_MAX.* FROM DLPRB_MAX INNER JOIN `5G_MAX_IDX`
SELECT `DLPRB_MAX`.* FROM `DLPRB_MAX` INNER JOIN `5G_MAX_IDX`
ON
DLPRB_MAX.`日期` = 5G_MAX_IDX.`日期` AND
DLPRB_MAX.NCGI = 5G_MAX_IDX.`NCGI` AND
DLPRB_MAX.`下行PRB平均利用率` = 5G_MAX_IDX.`最大值`;
`DLPRB_MAX`.`日期` = `5G_MAX_IDX`.`日期` AND
`DLPRB_MAX`.`NCGI` = `5G_MAX_IDX`.`NCGI` AND
`DLPRB_MAX`.`下行PRB平均利用率` = `5G_MAX_IDX`.`最大值`
WHERE NOT EXISTS (
SELECT 1 FROM `5G_MAX`
WHERE `5G_MAX`.`日期` = `DLPRB_MAX`.`日期`
AND `5G_MAX`.`NCGI` = `DLPRB_MAX`.`NCGI`
);
DROP TABLE IF EXISTS `ULPRB_MAX`;
DROP TABLE IF EXISTS `DLPRB_MAX`;
DROP TABLE IF EXISTS `5G_MAX_IDX`;
CREATE TEMPORARY TABLE IF NOT EXISTS `日流量`(SELECT `日期`,NCGI, SUM(`5G上下行总流量_GB`) AS `日流量` FROM 5G GROUP BY `日期`,NCGI);
CREATE TEMPORARY TABLE IF NOT EXISTS `日流量`(SELECT `日期`, `NCGI`, SUM(`5G上下行总流量_GB`) AS `日流量` FROM `5G` GROUP BY `日期`, `NCGI`);
ALTER TABLE `日流量` ADD INDEX (`NCGI`);
CREATE TEMPORARY TABLE IF NOT EXISTS `5G日均流量` (
SELECT NCGI, AVG(`日流量`) AS `日均流量`, COUNT(`日期`) AS `流量有效天数` FROM `日流量` WHERE `日流量` > 0 GROUP BY NCGI
SELECT `NCGI`, AVG(`日流量`) AS `日均流量`, COUNT(`日期`) AS `流量有效天数` FROM `日流量` WHERE `日流量` > 0 GROUP BY `NCGI`
);
CREATE TABLE IF NOT EXISTS `5G_结果表` (
SELECT NCGI, `CU小区配置名称`,
SELECT `NCGI`, `CU小区配置名称`,
ROUND(AVG(`5G上下行总流量_GB`),6) AS `5G上下行总流量(上行PDCP PDU数据量+下行PDCP成功发送数据量)(GB)`,
ROUND(AVG(`5G上行流量_GB`),6) AS `5G上行流量(上行PDCP PDU数据量)(GB)`,
ROUND(AVG(`5G下行流量_GB`),6) AS `5G下行流量(下行PDCP成功发送数据量)(GB)`,
@@ -476,13 +467,13 @@ CREATE TABLE IF NOT EXISTS `5G_结果表` (
ROUND(AVG(`小区下行RLC_SDU字节数_MByte`),6) AS `小区下行RLC SDU字节数(MByte)`,
ROUND(AVG(`小区上行RLC_SDU字节数_MByte`),6) AS `小区上行RLC SDU字节数(MByte)`,
ROUND(AVG(`平均单Flow流量_MB`),6) AS `单Flow流量(MB)`
FROM 5G_MAX GROUP BY NCGI, `CU小区配置名称`
FROM `5G_MAX` GROUP BY `NCGI`, `CU小区配置名称`
);
ALTER TABLE `5G_结果表` ADD COLUMN `日均流量(GB)` DOUBLE AFTER `CU小区配置名称`, ADD INDEX (`NCGI`);
ALTER TABLE `5G日均流量` ADD INDEX (NCGI);
ALTER TABLE `5G日均流量` ADD INDEX (`NCGI`);
UPDATE `5G_结果表` INNER JOIN `5G日均流量`
ON `5G_结果表`.NCGI=`5G日均流量`.NCGI
ON `5G_结果表`.`NCGI` = `5G日均流量`.`NCGI`
SET `5G_结果表`.`日均流量(GB)` = ROUND(`5G日均流量`.`日均流量`,6);
DROP TABLE IF EXISTS `日流量`;
@@ -491,19 +482,17 @@ DROP TABLE IF EXISTS `4G`;
DROP TABLE IF EXISTS `5G`;
DROP TABLE IF EXISTS `5G_MAX`;
UPDATE `4G_结果表` SET `日均流量(GB)` = IFNULL( `日均流量(GB)`, 0 ),
`自忙时流量(GB)` = IFNULL( `自忙时流量(GB)`, 0 ),
`ERAB流量` = IFNULL( `ERAB流量`, 0 ),
`上行流量(GB)` = IFNULL( `上行流量(GB)`, 0 ),
`下行流量(GB)` = IFNULL( `下行流量(GB)`, 0 ),
`用户面平均激活UE数` = IFNULL( `用户面平均激活UE数`, 0 ),
`YY-RRC连接建立最大用户数` = IFNULL( `YY-RRC连接建立最大用户数`, 0 ),
`上行PUSCH利用率` = IFNULL( `上行PUSCH利用率`, 0 ),
`下行PDSCH利用率` = IFNULL( `下行PDSCH利用率`, 0 ),
`PDCCH资源利用率` = IFNULL( `PDCCH资源利用率`, 0 ),
`用户面最大激活UE数` = IFNULL( `用户面最大激活UE数`, 0 );
UPDATE `4G_结果表` SET `日均流量(GB)` = IFNULL(`日均流量(GB)`, 0),
`自忙时流量(GB)` = IFNULL(`自忙时流量(GB)`, 0),
`ERAB流量` = IFNULL(`ERAB流量`, 0),
`上行流量(GB)` = IFNULL(`上行流量(GB)`, 0),
`下行流量(GB)` = IFNULL(`下行流量(GB)`, 0),
`用户面平均激活UE数` = IFNULL(`用户面平均激活UE数`, 0),
`YY-RRC连接建立最大用户数` = IFNULL(`YY-RRC连接建立最大用户数`, 0),
`上行PUSCH利用率` = IFNULL(`上行PUSCH利用率`, 0),
`下行PDSCH利用率` = IFNULL(`下行PDSCH利用率`, 0),
`PDCCH资源利用率` = IFNULL(`PDCCH资源利用率`, 0),
`用户面最大激活UE数` = IFNULL(`用户面最大激活UE数`, 0);
UPDATE `5G_结果表` SET
`日均流量(GB)` = IFNULL(`日均流量(GB)`,0),
@@ -520,4 +509,3 @@ UPDATE `5G_结果表` SET
`小区下行RLC SDU字节数(MByte)` = IFNULL(`小区下行RLC SDU字节数(MByte)`,0),
`小区上行RLC SDU字节数(MByte)` = IFNULL(`小区上行RLC SDU字节数(MByte)`,0),
`单Flow流量(MB)` = IFNULL(`单Flow流量(MB)`,0);