WITH c AS ( -- CTE 1: Calculates the raw counts for the three remaining jam types SELECT -- New metric: Merge_MCM01 CAST(COALESCE(SUM(Merge_MCM01 = 1), 0) AS SIGNED) AS Merge_MCM01, -- New metric: Transport_MCM01 CAST(COALESCE(SUM(Transport_MCM01 = 1), 0) AS SIGNED) AS Transport_MCM01, -- Kept metric: Sorter_MCM02 CAST(COALESCE(SUM(Sorter_MCM02 = 1), 0) AS SIGNED) AS Sorter_MCM02 FROM jam_area WHERE t_stamp BETWEEN :starttime AND :endtime ), t AS ( -- CTE 2: Calculates the sum of all three counts SELECT (Merge_MCM01 + Transport_MCM01 + Sorter_MCM02) AS Total FROM c ) -- 1. Result row for Merge_MCM01 SELECT 'Merge_MCM01' AS Area, ROUND(c.Merge_MCM01 / NULLIF(t.Total, 0) * 100.0, 2) AS Percent, c.Merge_MCM01 AS Count FROM c CROSS JOIN t UNION ALL -- 2. Result row for Transport_MCM01 SELECT 'Transport_MCM01' AS Area, ROUND(c.Transport_MCM01 / NULLIF(t.Total, 0) * 100.0, 2), c.Transport_MCM01 FROM c CROSS JOIN t UNION ALL -- 3. Result row for Sorter_MCM02 SELECT 'Sorter_MCM02' AS Area, ROUND(c.Sorter_MCM02 / NULLIF(t.Total, 0) * 100.0, 2), c.Sorter_MCM02 FROM c CROSS JOIN t;