Группировка записей. Предложение 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, составляет группу, и агрегатные функции выполняются для каждой группы отдельно.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Группировка
Группировка При наведении указателя мыши на правую границу любого заголовка столбца можно увидеть стрелку. Щелкнув на ней кнопкой мыши, вы развернете панель, содержащую настройки группировки и фильтрации (рис. 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).Для применения режима группировки щелкните кнопкой