Агрегатные функции
157
'CHK'
. Поскольку блок
group
by
отсутствует,
имеется единственная
не
явная
группа (все возвращенные запросом строки).
Однако в большинстве случаев потребуется извлекать и другие столбцы,
а не только сформированные агрегатными функциями. Что если, к при
меру, заставить предыдущий запрос выполнить
эти же пять агрегатных
функций для каждого типа счетов, а не только для текущих счетов? Для
такого запроса пришлось бы извлекать столбец
product_cd
в
дополнение
к столбцам, сформированным пятью агрегатными функциями:
SELECT
product_cd
,
MAX(avail_balance) max_balance,
MIN(avail_balance) min_balance,
AVG(avail_balance) avg_balance,
SUM(avail_balance) tot_balance,
COUNT(*) num_accounts
FROM account;
Однако если попытаться выполнить этот запрос, будет получена сле
дующая ошибка:
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT( ),...)
with no GROUP columns is illegal if there
is no GROUP BY clause
Хотя для разработчика очевидно, что он хочет применить агрегатные
функции к
множеству счетов каждого типа, выявленного в таблице
account
, этот запрос дает сбой,
потому что не был
явно
задан
способ груп
пировки данных. Следовательно, необходимо добавить блок
group
by
и определить в нем
группу строк, к которой следует применять агре
гатные функции:
mysql>
SELECT product_cd,
> MAX(avail_balance) max_balance,
Достарыңызбен бөлісу: