Группировка записей. Предложение GROUP BY

Группировка записей. Предложение GROUP BY

Предложение GROUP BY используется для определения групп выходных строк, к которым могут применяться агрегатные функции (COUNT, MIN, MAX, AVG и SUM). Если это предложение отсутствует, и используются агрегатные функции, то все столбцы с именами, упомянутыми в SELECT, должны быть включены в агрегатные функции, и эти функции будут применяться ко всему набору строк, которые удовлетворяют предикату запроса. В противном случае все столбцы списка SELECT, не вошедшие в агрегатные функции, должны быть указаны в предложении GROUP BY. В результате чего все выходные строки запроса разбиваются на группы, характеризуемые одинаковыми комбинациями значений в этих столбцах. После этого к каждой группе будут применены агрегатные функции. Следует иметь в виду, что для GROUP BY все значения NULL трактуются как равные, т.е. при группировке по полю, содержащему NULL-значения, все такие строки попадут в одну группу.

Если при наличии предложения GROUP BY, в предложении SELECT отсутствуют агрегатные функции, то запрос просто вернет по одной строке из каждой группы. Эту возможность, наряду с ключевым словом DISTINCT, можно использовать для исключения дубликатов строк в результирующем наборе.

Рассмотрим простой пример:

SELECT model, COUNT(model) AS Qty_model, AVG(price) AS Avg_price

FROM PC

GROUP BY model;

В этом запросе для каждой модели ПК определяется их количество и средняя стоимость. Все строки с одинаковыми значениями model (номер модели) образуют группу, и на выходе SELECT вычисляются количество значений и средние значения цены для каждой группы. Результатом выполнения запроса будет следующая таблица:

model

Qty_model

Avg_price

1121

3

850.0

1232

4

425.0

1233

3

843.33333333333337

1260

1

350.0

Если бы в SELECT присутствовал столбец с датой, то можно было бы вычислять эти показатели для каждой конкретной даты. Для этого нужно добавить дату в качестве группирующего столбца, и тогда агрегатные функции вычислялись бы для каждой комбинации значений (модель−дата).

Существует несколько определенных правил выполнения агрегатных функций:

* Если в результате выполнения запроса не получено ни одной строки (или не одной строки для данной группы), то исходные данные для вычисления любой из агрегатных функций отсутствуют. В этом случае результатом выполнения функций COUNT будет нуль, а результатом всех других функций - NULL.

* Аргумент агрегатной функции не может сам содержать агрегатные функции (функция от функции). Т.е. в одном запросе нельзя, скажем, получить максимум средних значений.

* Результат выполнения функции COUNT есть целое число (INTEGER). Другие агрегатные функции наследуют типы данных обрабатываемых значений.

* Если при выполнении функции SUM был получен результат, превышающий максимальное значение используемого типа данных, возникает ошибка.

Итак, если запрос не содержит предложения GROUP BY, то агрегатные функции, включенные в предложение SELECT, исполняются над всеми результирующими строками запроса. Если запрос содержит предложение GROUP BY, каждый набор строк, который имеет одинаковые значения столбца или группы столбцов, заданных в предложении GROUP BY, составляет группу, и агрегатные функции выполняются для каждой группы отдельно.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Группировка

Из книги автора

Группировка При наведении указателя мыши на правую границу любого заголовка столбца можно увидеть стрелку. Щелкнув на ней кнопкой мыши, вы развернете панель, содержащую настройки группировки и фильтрации (рис. 3.8). Рис. 3.8. Панель настроек группировки и фильтрацииЧтобы


История Open Group

Из книги автора

История Open Group The Open Group (Открытая группа) была сформирована в 1996 году объединением организаций X/Open Company (основана в 1984 году) и Open Software Foundation (OSF, основан в 1988 году). Эта группа представляет собой международный консорциум производителей и потребителей из промышленности,


Создание файлов passwd и group

Из книги автора

Создание файлов passwd и group Для возможности входа в систему под учетной записью root и для распознавания оболочкой имени «root», необходимо создать соответствующие записи в файлах /etc/passwd и /etc/group.Для создания файла /etc/passwd, выполните:echo «root:x:0:0:root:/root:/bin/bash» > /etc/passwdПароль для root (


10.5.3. Группировка

Из книги автора

10.5.3. Группировка В файле ftpgroups находятся описания групп (равносильны правам доступа), при создании которых можно использовать команды SITE GROUP и SITE GPASS. Это нестандартные директивы FTP, и мало кем из производителей поддерживаются, поэтому для пользователей работа с этими


23.2.6 Group Membership

Из книги автора

23.2.6 Group Membership Формат сообщений многоадресных рассылок Group Membership (членство в группе) показан на рис. 23.4. Он был изменен относительно версии 4 для согласования с форматом ICMPv6. Поле Maximum Response Delay (максимальная задержка ответа) имеет ненулевое значение только в сообщениях


Алексей Басов (Begun.ru, Finam.ru, Mail.Ru Group)

Из книги автора

Алексей Басов (Begun.ru, Finam.ru, Mail.Ru Group) Компания «Бегун» – первый российский сервис контекстной рекламы с платой за результат и аукционным ценообразованием. Компания работает на рынке с 2002 года. Среди партнеров – «Рамблер», Google, Mail.ru, «Афиша», Yahoo! ЖЖ, «Одноклассники» и многие


The Open Group

Из книги автора

The Open Group The Open Group (Открытая группа) была сформирована в 1996 году объединением X/Open Company (основана в 1984 году) и Open Software Foundation (OSF, основан в 1988 году). Эта группа представляет собой международный консорциум производителей и потребителей из промышленности, правительства и


Элементы CheckBox, RadioButton и Group Box

Из книги автора

Элементы CheckBox, RadioButton и Group Box Пространство имен System.Windows.Forms определяет целый ряд других типов, расширяющих возможности ButtonBase, и это, в частности, тип CheckBox (кнопка с независимой фиксацией, может поддерживать до трех возможных состояний) и тип RadioButton (кнопка с зависимой


2.3.5. Группировка записей отчета Crystal Reports

Из книги автора

2.3.5. Группировка записей отчета Crystal Reports По умолчанию записи в отчете располагаются в том порядке, в которой они располагаются в источнике данных (файле Excel). Очень частоВкладка Border позволяет создать рамку для объекта. На вкладке Fom можно установить размер, стиль и


2.3.5. Группировка записей отчета Crystal Reports

Из книги автора

2.3.5. Группировка записей отчета Crystal Reports По умолчанию записи в отчете располагаются в том порядке, в которой они располагаются в источнике данных (файле Excel). Очень часто требуется расположить записи в определенном порядке, например покупателей из одного города


Предложение GROUP BY

Из книги автора

Предложение GROUP BY Когда запрос включает предложение GROUP BY, TO спецификация столбца и таблицы, а именно:SELECT {<список-столбцов>}FROM <спецификация-таблицы>[WHERE <условие-поиска>]передается следующей стадии обработки, где строки разделяются на одну или более вложенных


Группировка

Из книги автора

Группировка Чтобы можно было применять некоторые операции к нескольким объектам, их нужно выделить, создав временную группу объектов: изменения одного объекта отражаются на всех остальных объектах, входящих в группу. Если выделение снять, то группировка исчезнет.Однако


Группировка записей

Из книги автора

Группировка записей Приведенный выше отчет с его структурой является также одной из форм организации записей. Однако группировать данные можно и более привычным способом, то есть с помощью мастера отчетов. Его запуск и начало работы осуществляются почти так же, как


2.1.5. Опции -group и -nogroup

Из книги автора

2.1.5. Опции -group и -nogroup Опции -group и -nogroup аналогичны опциям -user и -nouser и позволяют искать файлы, принадлежащие заданной группе или несуществующим группам. Ниже приведена команда для нахождения в каталоге /apps всех файлов, которыми владеют пользователи группы accts:$ find /apps -group accts


Mail.ru Group готовится к IPO Юрий Ильин

Из книги автора

Mail.ru Group готовится к IPO Юрий Ильин Опубликовано 11 октября 2010 года Компания Mail.ru Group Limited, до сентября 2010 г. называвшаяся Digital Sky Technologies, официально объявила о намерении провести первичное размещение акций (IPO) на Лондонской фондовой бирже (LSE) до конца 2010


Группировка

Из книги автора

Группировка При наведении указателя мыши на заголовок любого столбца в его правой части появится стрелка ?, щелчок кнопкой мыши на которой открывает меню выбора дополнительных способов отображения объектов (рис. 2.40).Для применения режима группировки щелкните кнопкой