Updated Dumper cycles statistics

This commit is contained in:
gigi.mamaladze 2025-10-19 22:13:02 +04:00
parent 6c7e7b860a
commit 2d44718513
2 changed files with 54 additions and 49 deletions

View File

@ -1,27 +1,18 @@
SELECT SELECT
CONCAT(DATE(:starttime), ' ', HOUR(:starttime), ':', LPAD(MINUTE(:starttime), 2, '0')) AS StartTimestamp, DATE_FORMAT(:starttime, '%Y-%m-%d %H:%i') AS StartTimestamp,
CONCAT(DATE(:endtime), ' ', HOUR(:endtime), ':', LPAD(MINUTE(:endtime), 2, '0')) AS EndTimestamp, DATE_FORMAT(:endtime, '%Y-%m-%d %H:%i') AS EndTimestamp,
COALESCE(SUM(dumper_cycles.ulc1 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc2 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc3 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc4 = 1), 0) AS Total, COALESCE(c.U1,0) + COALESCE(c.U2,0) + COALESCE(c.U3,0) + COALESCE(c.U4,0) AS Total,
COALESCE(SUM(dumper_cycles.ulc1 = 1), 0) AS ULC1, COALESCE(c.U1,0) AS ULC1,
COALESCE(SUM(dumper_cycles.ulc2 = 1), 0) AS ULC2, COALESCE(c.U2,0) AS ULC2,
COALESCE(SUM(dumper_cycles.ulc3 = 1), 0) AS ULC3, COALESCE(c.U3,0) AS ULC3,
COALESCE(SUM(dumper_cycles.ulc4 = 1), 0) AS ULC4 COALESCE(c.U4,0) AS ULC4
FROM dumper_cycles FROM (SELECT 1) AS p
WHERE dumper_cycles.t_stamp BETWEEN :starttime AND :endtime LEFT JOIN (
SELECT
UNION ALL SUM(ulc1 = 1) AS U1,
SUM(ulc2 = 1) AS U2,
-- Default row with zeros when no dumper cycles exist SUM(ulc3 = 1) AS U3,
SELECT SUM(ulc4 = 1) AS U4
CONCAT(DATE(:starttime), ' ', HOUR(:starttime), ':', LPAD(MINUTE(:starttime), 2, '0')) AS StartTimestamp, FROM dumper_cycles
CONCAT(DATE(:endtime), ' ', HOUR(:endtime), ':', LPAD(MINUTE(:endtime), 2, '0')) AS EndTimestamp, WHERE t_stamp BETWEEN :starttime AND :endtime
0 AS Total, ) AS c ON 1=1;
0 AS ULC1,
0 AS ULC2,
0 AS ULC3,
0 AS ULC4
WHERE NOT EXISTS (
SELECT 1 FROM dumper_cycles
WHERE dumper_cycles.t_stamp BETWEEN :starttime AND :endtime
);

View File

@ -1,27 +1,41 @@
SELECT SELECT
CONCAT(DATE(:starttime), ' ', HOUR(:starttime), ':', LPAD(MINUTE(:starttime), 2, '0')) AS StartTimestamp, DATE_FORMAT(:starttime, '%Y-%m-%d %H:%i') AS StartTimestamp,
CONCAT(DATE(:endtime), ' ', HOUR(:endtime), ':', LPAD(MINUTE(:endtime), 2, '0')) AS EndTimestamp, DATE_FORMAT(:endtime, '%Y-%m-%d %H:%i') AS EndTimestamp,
COALESCE(SUM(dumper_cycles.ulc1 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc2 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc3 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc4 = 1), 0) AS Total,
CONCAT(ROUND(COALESCE(SUM(dumper_cycles.ulc1 = 1), 0) / NULLIF(COALESCE(SUM(dumper_cycles.ulc1 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc2 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc3 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc4 = 1), 0), 0) * 100, 2), '%') AS ULC1,
CONCAT(ROUND(COALESCE(SUM(dumper_cycles.ulc2 = 1), 0) / NULLIF(COALESCE(SUM(dumper_cycles.ulc1 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc2 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc3 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc4 = 1), 0), 0) * 100, 2), '%') AS ULC2,
CONCAT(ROUND(COALESCE(SUM(dumper_cycles.ulc3 = 1), 0) / NULLIF(COALESCE(SUM(dumper_cycles.ulc1 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc2 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc3 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc4 = 1), 0), 0) * 100, 2), '%') AS ULC3,
CONCAT(ROUND(COALESCE(SUM(dumper_cycles.ulc4 = 1), 0) / NULLIF(COALESCE(SUM(dumper_cycles.ulc1 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc2 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc3 = 1), 0) + COALESCE(SUM(dumper_cycles.ulc4 = 1), 0), 0) * 100, 2), '%') AS ULC4
FROM dumper_cycles
WHERE dumper_cycles.t_stamp BETWEEN :starttime AND :endtime
UNION ALL -- totals
COALESCE(c.U1,0) + COALESCE(c.U2,0) + COALESCE(c.U3,0) + COALESCE(c.U4,0) AS Total,
-- Default row with zeros when no dumper cycles exist -- percentages (string with %; 0% when total = 0)
SELECT CASE
CONCAT(DATE(:starttime), ' ', HOUR(:starttime), ':', LPAD(MINUTE(:starttime), 2, '0')) AS StartTimestamp, WHEN (COALESCE(c.U1,0) + COALESCE(c.U2,0) + COALESCE(c.U3,0) + COALESCE(c.U4,0)) = 0
CONCAT(DATE(:endtime), ' ', HOUR(:endtime), ':', LPAD(MINUTE(:endtime), 2, '0')) AS EndTimestamp, THEN '0%'
0 AS Total, ELSE CONCAT(ROUND(COALESCE(c.U1,0) / (COALESCE(c.U1,0)+COALESCE(c.U2,0)+COALESCE(c.U3,0)+COALESCE(c.U4,0)) * 100, 2), '%')
'0%' AS ULC1, END AS ULC1,
'0%' AS ULC2,
'0%' AS ULC3,
'0%' AS ULC4
WHERE NOT EXISTS ( CASE
SELECT 1 FROM dumper_cycles WHEN (COALESCE(c.U1,0) + COALESCE(c.U2,0) + COALESCE(c.U3,0) + COALESCE(c.U4,0)) = 0
WHERE dumper_cycles.t_stamp BETWEEN :starttime AND :endtime THEN '0%'
); ELSE CONCAT(ROUND(COALESCE(c.U2,0) / (COALESCE(c.U1,0)+COALESCE(c.U2,0)+COALESCE(c.U3,0)+COALESCE(c.U4,0)) * 100, 2), '%')
END AS ULC2,
CASE
WHEN (COALESCE(c.U1,0) + COALESCE(c.U2,0) + COALESCE(c.U3,0) + COALESCE(c.U4,0)) = 0
THEN '0%'
ELSE CONCAT(ROUND(COALESCE(c.U3,0) / (COALESCE(c.U1,0)+COALESCE(c.U2,0)+COALESCE(c.U3,0)+COALESCE(c.U4,0)) * 100, 2), '%')
END AS ULC3,
CASE
WHEN (COALESCE(c.U1,0) + COALESCE(c.U2,0) + COALESCE(c.U3,0) + COALESCE(c.U4,0)) = 0
THEN '0%'
ELSE CONCAT(ROUND(COALESCE(c.U4,0) / (COALESCE(c.U1,0)+COALESCE(c.U2,0)+COALESCE(c.U3,0)+COALESCE(c.U4,0)) * 100, 2), '%')
END AS ULC4
FROM (
SELECT
SUM(ulc1 = 1) AS U1,
SUM(ulc2 = 1) AS U2,
SUM(ulc3 = 1) AS U3,
SUM(ulc4 = 1) AS U4
FROM dumper_cycles
WHERE t_stamp BETWEEN :starttime AND :endtime
) AS c;