WITH SORTERS AS ( SELECT MIN(timestamp) AS start_timestamp, MAX(timestamp) AS end_timestamp, 3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier, "SYSTEM" AS sorter, SUM(IF(lane_id LIKE "UL%", count, 0)) AS inducted, SUM(IF(lane_id LIKE "CH%", count, 0)) AS sorted FROM pe_history WHERE timestamp BETWEEN :startDate AND :endDate GROUP BY "SYSTEM" /* Makes it so no row is returned if no rows are processed */ ) SELECT start_timestamp, end_timestamp, sorter, /* Counts: */ inducted AS inducted_count, sorted AS sorted_count, /* PPH: */ ROUND(inducted*pph_multiplier) AS inducted_pph, ROUND(sorted*pph_multiplier) AS sorted_pph, /* Percents: */ ROUND(inducted/inducted, 4) AS inducted_percent, ROUND(sorted/sorted, 4) AS sorted_percent FROM SORTERS;