29 lines
929 B
SQL

WITH counts AS (
SELECT
CAST(COALESCE(SUM(ulc1=1),0) AS SIGNED) AS ULC1,
CAST(COALESCE(SUM(ulc2=1),0) AS SIGNED) AS ULC2,
CAST(COALESCE(SUM(ulc3=1),0) AS SIGNED) AS ULC3,
CAST(COALESCE(SUM(ulc4=1),0) AS SIGNED) AS ULC4
FROM dumper_cycles
WHERE t_stamp BETWEEN :starttime AND :endtime
),
totals AS (
SELECT (ULC1+ULC2+ULC3+ULC4) AS Dump_Total FROM counts
),
labels AS (
SELECT 'ULC1' AS Dumper UNION ALL
SELECT 'ULC2' UNION ALL
SELECT 'ULC3' UNION ALL
SELECT 'ULC4'
)
SELECT
l.Dumper,
CASE WHEN l.Dumper='ULC1' THEN ROUND(c.ULC1 / t.Dump_Total * 100, 2) END AS ULC1,
CASE WHEN l.Dumper='ULC2' THEN ROUND(c.ULC2 / t.Dump_Total * 100, 2) END AS ULC2,
CASE WHEN l.Dumper='ULC3' THEN ROUND(c.ULC3 / t.Dump_Total * 100, 2) END AS ULC3,
CASE WHEN l.Dumper='ULC4' THEN ROUND(c.ULC4 / t.Dump_Total * 100, 2) END AS ULC4,
100 AS Dump_Count
FROM labels l
CROSS JOIN counts c
CROSS JOIN totals t;