Skip to content

Commit 90ae31d

Browse files
Merge branch 'dev'
2 parents 632e088 + cdc6914 commit 90ae31d

File tree

3 files changed

+65
-1
lines changed

3 files changed

+65
-1
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
USE `fasp`;
2+
DROP procedure IF EXISTS `getDashboardForecastErrorNew`;
3+
4+
USE `fasp`;
5+
DROP procedure IF EXISTS `fasp`.`getDashboardForecastErrorNew`;
6+
;
7+
8+
DELIMITER $$
9+
USE `fasp`$$
10+
CREATE DEFINER=`faspUser`@`%` PROCEDURE `getDashboardForecastErrorNew`(VAR_START_DATE DATE, VAR_STOP_DATE DATE, VAR_PROGRAM_ID INT)
11+
BEGIN
12+
13+
SELECT p.CURRENT_VERSION_ID INTO @varVersionId FROM vw_program p WHERE p.PROGRAM_ID=VAR_PROGRAM_ID;
14+
SELECT GROUP_CONCAT(pu.PLANNING_UNIT_ID) INTO @varPuList
15+
FROM vw_program p
16+
LEFT JOIN rm_program_planning_unit ppu ON p.PROGRAM_ID=ppu.PROGRAM_ID
17+
LEFT JOIN rm_planning_unit pu ON ppu.PLANNING_UNIT_ID=pu.PLANNING_UNIT_ID
18+
WHERE p.PROGRAM_ID=VAR_PROGRAM_ID AND ppu.ACTIVE AND pu.ACTIVE;
19+
SELECT COUNT(pr.REGION_ID) into @varRegionCount FROM rm_program_region pr WHERE pr.PROGRAM_ID=VAR_PROGRAM_ID;
20+
21+
22+
SELECT
23+
c4.PLANNING_UNIT_ID, c4.LABEL_ID, c4.LABEL_EN, c4.LABEL_FR, c4.LABEL_SP, c4.LABEL_PR, AVG(FORECAST_ERROR) `ERROR_PERC`, COUNT(c4.ACTUAL_CONSUMPTION) `NO_OF_MONTHS`, c4.FORECAST_ERROR_THRESHOLD
24+
FROM (
25+
SELECT
26+
mn.MONTH, pu.PLANNING_UNIT_ID, pu.LABEL_ID, pu.LABEL_EN, pu.LABEL_FR, pu.LABEL_SP, pu.LABEL_PR, c2.CONSUMPTION_DATE, c2.FORECAST_CONSUMPTION, c2.ACTUAL_CONSUMPTION,
27+
IF(c2.FORECAST_CONSUMPTION IS NOT NULL AND c2.ACTUAL_CONSUMPTION IS NOT NULL, SUM(ABS(c3.`FORECAST_CONSUMPTION`-c3.`ACTUAL_CONSUMPTION`))/SUM(c3.`ACTUAL_CONSUMPTION`), null) `FORECAST_ERROR`, ppu.FORECAST_ERROR_THRESHOLD
28+
FROM mn
29+
LEFT JOIN vw_program p ON p.PROGRAM_ID=VAR_PROGRAM_ID
30+
LEFT JOIN rm_program_planning_unit ppu ON p.PROGRAM_ID=ppu.PROGRAM_ID
31+
LEFT JOIN vw_planning_unit pu ON ppu.PLANNING_UNIT_ID=pu.PLANNING_UNIT_ID
32+
LEFT JOIN (
33+
SELECT c1.PLANNING_UNIT_ID, c1.CONSUMPTION_DATE, COUNT(c1.REGION_ID) `REGION_COUNT`, SUM(c1.`FORECAST_CONSUMPTION`) `FORECAST_CONSUMPTION`, SUM(c1.`ACTUAL_CONSUMPTION`) `ACTUAL_CONSUMPTION`
34+
FROM (
35+
SELECT ct.PLANNING_UNIT_ID, ct.REGION_ID, ct.CONSUMPTION_DATE, SUM(IF(ct.ACTUAL_FLAG, ct.CONSUMPTION_QTY, null)) `ACTUAL_CONSUMPTION`, SUM(IF(ct.ACTUAL_FLAG=0, ct.CONSUMPTION_QTY, null)) `FORECAST_CONSUMPTION`
36+
FROM (
37+
SELECT ct.CONSUMPTION_ID, MAX(ct.VERSION_ID) MAX_VERSION_ID FROM rm_consumption c LEFT JOIN rm_consumption_trans ct ON c.CONSUMPTION_ID=ct.CONSUMPTION_ID WHERE ct.VERSION_ID<=@varVersionId AND c.PROGRAM_ID=VAR_PROGRAM_ID GROUP BY ct.CONSUMPTION_ID
38+
) tc
39+
LEFT JOIN rm_consumption cons ON tc.CONSUMPTION_ID=cons.`CONSUMPTION_ID`
40+
LEFT JOIN rm_consumption_trans ct ON cons.CONSUMPTION_ID=ct.CONSUMPTION_ID AND tc.MAX_VERSION_ID=ct.VERSION_ID
41+
WHERE ct.CONSUMPTION_DATE BETWEEN VAR_START_DATE AND VAR_STOP_DATE AND FIND_IN_SET(ct.PLANNING_UNIT_ID, @varPuList) AND ct.ACTIVE
42+
GROUP BY ct.PLANNING_UNIT_ID, ct.REGION_ID, ct.CONSUMPTION_DATE
43+
-- ORDER BY ct.PLANNING_UNIT_ID, ct.REGION_ID, ct.CONSUMPTION_DATE
44+
) c1 GROUP BY c1.PLANNING_UNIT_ID, c1.CONSUMPTION_DATE HAVING REGION_COUNT=@varRegionCount
45+
) c2 ON pu.PLANNING_UNIT_ID=c2.PLANNING_UNIT_ID AND mn.MONTH=c2.CONSUMPTION_DATE
46+
LEFT JOIN (
47+
SELECT ct.PLANNING_UNIT_ID, ct.CONSUMPTION_DATE, SUM(IF(ct.ACTUAL_FLAG=0, ct.CONSUMPTION_QTY, null)) `FORECAST_CONSUMPTION`, SUM(IF(ct.ACTUAL_FLAG, ct.CONSUMPTION_QTY, null)) `ACTUAL_CONSUMPTION`
48+
FROM (
49+
SELECT ct.CONSUMPTION_ID, MAX(ct.VERSION_ID) MAX_VERSION_ID FROM rm_consumption c LEFT JOIN rm_consumption_trans ct ON c.CONSUMPTION_ID=ct.CONSUMPTION_ID WHERE ct.VERSION_ID<=@varVersionId AND c.PROGRAM_ID=VAR_PROGRAM_ID GROUP BY ct.CONSUMPTION_ID
50+
) tc
51+
LEFT JOIN rm_consumption cons ON tc.CONSUMPTION_ID=cons.`CONSUMPTION_ID`
52+
LEFT JOIN rm_consumption_trans ct ON cons.CONSUMPTION_ID=ct.CONSUMPTION_ID AND tc.MAX_VERSION_ID=ct.VERSION_ID
53+
WHERE ct.CONSUMPTION_DATE BETWEEN SUBDATE(VAR_START_DATE, INTERVAL 5 MONTH) AND VAR_STOP_DATE AND FIND_IN_SET(ct.PLANNING_UNIT_ID, @varPuList) AND ct.ACTIVE
54+
GROUP BY ct.PLANNING_UNIT_ID, ct.CONSUMPTION_DATE
55+
) c3 ON c3.CONSUMPTION_DATE BETWEEN SUBDATE(mn.`MONTH`, INTERVAL 5 MONTH) AND mn.`MONTH` AND c3.PLANNING_UNIT_ID=c2.PLANNING_UNIT_ID
56+
WHERE mn.MONTH BETWEEN VAR_START_DATE AND VAR_STOP_DATE AND p.PROGRAM_ID=VAR_PROGRAM_ID AND pu.ACTIVE
57+
GROUP BY pu.PLANNING_UNIT_ID, mn.`MONTH`
58+
-- ORDER BY pu.PLANNING_UNIT_ID, mn.`MONTH`
59+
) c4 GROUP BY c4.PLANNING_UNIT_ID ORDER BY `ERROR_PERC` DESC;
60+
END$$
61+
62+
DELIMITER ;
63+
;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
20241210-QAT-1448.sql

src/main/resources/storedProcedures/getDashboardForecastErrorNew.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ BEGIN
4444
WHERE ct.CONSUMPTION_DATE BETWEEN SUBDATE(VAR_START_DATE, INTERVAL 5 MONTH) AND VAR_STOP_DATE AND FIND_IN_SET(ct.PLANNING_UNIT_ID, @varPuList) AND ct.ACTIVE
4545
GROUP BY ct.PLANNING_UNIT_ID, ct.CONSUMPTION_DATE
4646
) c3 ON c3.CONSUMPTION_DATE BETWEEN SUBDATE(mn.`MONTH`, INTERVAL 5 MONTH) AND mn.`MONTH` AND c3.PLANNING_UNIT_ID=c2.PLANNING_UNIT_ID
47-
WHERE mn.MONTH BETWEEN VAR_START_DATE AND VAR_STOP_DATE AND p.PROGRAM_ID=VAR_PROGRAM_ID AND pu.ACTIVE AND c2.PLANNING_UNIT_ID IS NOT NULL
47+
WHERE mn.MONTH BETWEEN VAR_START_DATE AND VAR_STOP_DATE AND p.PROGRAM_ID=VAR_PROGRAM_ID AND pu.ACTIVE
4848
GROUP BY pu.PLANNING_UNIT_ID, mn.`MONTH`
4949
-- ORDER BY pu.PLANNING_UNIT_ID, mn.`MONTH`
5050
) c4 GROUP BY c4.PLANNING_UNIT_ID ORDER BY `ERROR_PERC` DESC;

0 commit comments

Comments
 (0)