У меня есть вопрос, касающийся моего сценария. Если я использую группу по выводу, который я хочу получить, неверно, однако, если я удаляю группу по выражению, вывод верен, но группировка из 3 категорий кратна показанному разу
Я хочу, чтобы вывод выглядел следующим образом:.
Ex.
Мой вывод:

Мой сценарий:
SELECT store,
CASE priority_level
WHEN '3' THEN 'High Priority'
WHEN '2' THEN 'Medium Priority'
WHEN '1' THEN 'Low Priority'
END as priority_level,
CAST(CASE priority_level
WHEN '3' THEN IF(date_received >= DATE_SUB(date_finished,INTERVAL 8 HOUR),(SELECT COUNT(*) FROM is_mr_done as imd
LEFT JOIN (SELECT mr_no,priority_level FROM repair_history ) rh
ON imd.mr_no = rh.mr_no
WHERE is_done = '1' AND rh.priority_level = '3'),'0')
WHEN '2' THEN IF(date_received >= DATE_SUB(date_finished,INTERVAL 3 DAY),(SELECT COUNT(*) FROM is_mr_done as imd
LEFT JOIN (SELECT mr_no,priority_level FROM repair_history ) rh
ON imd.mr_no = rh.mr_no
WHERE is_done = '1' AND rh.priority_level = '2'),'0')
WHEN '1' THEN IF(date_received >= DATE_SUB(date_finished,INTERVAL 5 DAY),(SELECT COUNT(*) FROM is_mr_done as imd
LEFT JOIN (SELECT mr_no,priority_level FROM repair_history ) rh
ON imd.mr_no = rh.mr_no
WHERE is_done = '1' AND rh.priority_level = '1'),'0')
END AS CHAR(10000) CHARACTER SET utf8) as total_hit,
CASE priority_level
WHEN '3' THEN IF(date_received >= DATE_SUB(date_finished,INTERVAL 8 HOUR),CONCAT(ROUND((100 / (SELECT COUNT(*) FROM repair_history WHERE priority_level ='3' AND store ='1130') * (SELECT COUNT(*) FROM is_mr_done as imd
LEFT JOIN (SELECT mr_no,priority_level FROM repair_history) rh
ON imd.mr_no = rh.mr_no
WHERE is_done = '1' AND rh.priority_level = '3'))),'%'),'0')
WHEN '2' THEN IF(date_received >= DATE_SUB(date_finished,INTERVAL 3 DAY),CONCAT(ROUND((100 / (SELECT COUNT(*) FROM repair_history WHERE priority_level ='2' ) * (SELECT COUNT(*) FROM is_mr_done as imd
LEFT JOIN (SELECT mr_no,priority_level FROM repair_history) rh
ON imd.mr_no = rh.mr_no
WHERE is_done = '1' AND rh.priority_level = '2'))),'%'),'0')
WHEN '1' THEN IF(date_received >= DATE_SUB(date_finished,INTERVAL 5 DAY),CONCAT(ROUND((100 / (SELECT COUNT(*) FROM repair_history WHERE priority_level ='1' ) * (SELECT COUNT(*) FROM is_mr_done as imd
LEFT JOIN (SELECT mr_no,priority_level FROM repair_history) rh
ON imd.mr_no = rh.mr_no
WHERE is_done = '1' AND rh.priority_level = '1'))),'%'),'0')
END as total_hit_average
FROM repair_history as rh
LEFT JOIN (SELECT mr_no,is_done,date_finished FROM is_mr_done) imd
ON rh.mr_no = imd.mr_no
WHERE priority_level != ''
История восстановления таблицы:

Таблица mr_is_done:
