diff --git a/CNO8_SCADA/ignition/named-query/Dumper/Dumper Lane Count/query.sql b/CNO8_SCADA/ignition/named-query/Dumper/Dumper Lane Count/query.sql index 7ae4cf5..524c988 100644 --- a/CNO8_SCADA/ignition/named-query/Dumper/Dumper Lane Count/query.sql +++ b/CNO8_SCADA/ignition/named-query/Dumper/Dumper Lane Count/query.sql @@ -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 -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 -); \ No newline at end of file + 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 t_stamp BETWEEN :starttime AND :endtime +) AS c ON 1=1; diff --git a/CNO8_SCADA/ignition/named-query/Dumper/Dumper Lane Percent/query.sql b/CNO8_SCADA/ignition/named-query/Dumper/Dumper Lane Percent/query.sql index 9a0cdd3..61ee6cf 100644 --- a/CNO8_SCADA/ignition/named-query/Dumper/Dumper Lane Percent/query.sql +++ b/CNO8_SCADA/ignition/named-query/Dumper/Dumper Lane Percent/query.sql @@ -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 -FROM dumper_cycles -WHERE dumper_cycles.t_stamp BETWEEN :starttime AND :endtime + DATE_FORMAT(:starttime, '%Y-%m-%d %H:%i') AS StartTimestamp, + DATE_FORMAT(:endtime, '%Y-%m-%d %H:%i') AS EndTimestamp, -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 -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 + -- 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, -WHERE NOT EXISTS ( - SELECT 1 FROM dumper_cycles - WHERE dumper_cycles.t_stamp BETWEEN :starttime AND :endtime -); \ No newline at end of file + 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 t_stamp BETWEEN :starttime AND :endtime +) AS c;