Изучаем sql


Сравнение неявных и явных групп



Pdf көрінісі
бет139/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   135   136   137   138   139   140   141   142   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Сравнение неявных и явных групп
В предыдущем примере все значения, возвращаемые по запросу, фор
мируются агрегатной функцией, а сами агрегатные функции применя
ются к группе строк, определенной условием фильтрации 
product_cd
=


Агрегатные функции
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,


Достарыңызбен бөлісу:
1   ...   135   136   137   138   139   140   141   142   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет