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

View File

@ -1,27 +1,41 @@
SELECT
CONCAT(DATE(:starttime), ' ', HOUR(:starttime), ':', LPAD(MINUTE(:starttime), 2, '0')) AS StartTimestamp,
CONCAT(DATE(:endtime), ' ', HOUR(:endtime), ':', LPAD(MINUTE(:endtime), 2, '0')) 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
DATE_FORMAT(:starttime, '%Y-%m-%d %H:%i') AS StartTimestamp,
DATE_FORMAT(:endtime, '%Y-%m-%d %H:%i') AS EndTimestamp,
-- totals
COALESCE(c.U1,0) + COALESCE(c.U2,0) + COALESCE(c.U3,0) + COALESCE(c.U4,0) AS Total,
-- percentages (string with %; 0% when total = 0)
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.U1,0) / (COALESCE(c.U1,0)+COALESCE(c.U2,0)+COALESCE(c.U3,0)+COALESCE(c.U4,0)) * 100, 2), '%')
END AS ULC1,
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.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 dumper_cycles.t_stamp BETWEEN :starttime AND :endtime
UNION ALL
-- Default row with zeros when no dumper cycles exist
SELECT
CONCAT(DATE(:starttime), ' ', HOUR(:starttime), ':', LPAD(MINUTE(:starttime), 2, '0')) AS StartTimestamp,
CONCAT(DATE(:endtime), ' ', HOUR(:endtime), ':', LPAD(MINUTE(:endtime), 2, '0')) AS EndTimestamp,
0 AS Total,
'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
);
WHERE t_stamp BETWEEN :starttime AND :endtime
) AS c;