Создайте индекс на ORDER_HISTORY
сверх (Store_ID, Status)
, тогда это должно быть много быстро.
SELECT
Store_ID,
status,
COUNT(*) as total
FROM
ORDER_HISTORY
GROUP BY
Store_ID,
status;
Затем используйте свое приложение для отображения данных нескольких результирующих строк в столбцах. Не должно быть сложно реализовать.
Другой подход будет (тот же индекс, что и выше):
SELECT
Store_ID,
SUM(CASE WHEN Status = 57 THEN 1 ELSE 0 END) AS order_completed,
SUM(CASE WHEN Status = 53 THEN 1 ELSE 0 END) AS order_cancelled,
SUM(CASE WHEN Status = 52 THEN 1 ELSE 0 END) AS order_processed,
SUM(CASE WHEN Status = 62 THEN 1 ELSE 0 END) AS order_processed
FROM
ORDER_HISTORY
GROUP BY
Store_ID;
Заменить значения NULL на соответствующие.