Стандартный SQL требует, чтобы вы указали предложение GROUP BY, если какой-либо столбец не заключен в статистическую функцию (IE: MIN, MAX, COUNT, SUM, AVG и т. Д.), Но MySQL поддерживает «скрытые столбцы вGROUP BY " - вот почему:
SELECT category,
error_count/SUM(error_count) AS percentage
FROM med_error_third_party_tmp;
... работает без ошибок.Проблема с функциональностью заключается в том, что поскольку нет GROUP BY, SUM является суммой столбца error_count для всей таблицы.Но другие значения столбца совершенно произвольны - на них нельзя положиться.
Это:
SELECT category,
error_count/(SELECT SUM(error_count)
FROM med_error_third_party_tmp) AS percentage
FROM med_error_third_party_tmp;
... даст вам процент в расчете на строку - значения категорий будут дублироваться, потому что нет группировки.
Это:
SELECT category,
SUM(error_count)/x.total AS percentage
FROM med_error_third_party_tmp
JOIN (SELECT SUM(error_count) AS total
FROM med_error_third_party_tmp) x
GROUP BY category
... даст вам процент на категорию от суммы значений категорий error_count против суммы значений error_count для всей таблицы.