Розділ GROUP BY дозволяє розбити виборку на декілька (підмножину) груп по заданому критерію.
Якщо позначити через R таблицю, яка є результатом попереднього розділу (FROM або WHERE), то результатом розділу GROUP BY буде розбиття R на кілька груп рядків, в яких для кожного стовпчика з списку стовпчиків розділу GROUP BY в усіх рядках кожної групи, значення цього стовпчика співпадають. Для позначення результату розділу GROUP BY в стандарті використовується термін "згрупована таблиця".
Синтаксис розділу GROUP BY такий:
GROUP BY <колонка> [, <колонка>...]
Дуже часто при групуванні даних використовуються функції агрегування.
Агрегатні функції потрібні для того, щоб обчислювати деяке значення для заданої множини рядків. Такою множиною рядків може бути група рядків, якщо агрегатна функція застосовується до згрупованої таблиці, або вся таблиця. Для всіх агрегатних функцій, крім COUNT(*), фактичний (тобто описаний семантикою) порядок обчислень наступний: на підставі параметрів агрегатної функції із заданої множини рядків виробляється список значень. Потім по цьому списку значень проводиться обчислення функції. Якщо список виявився порожній, значення функції COUNT() для нього дорівнює 0, а значення всіх інших функцій null.
В SQL існує ряд спеціальних стандартних функцій (SQL-функцій). Крім спеціального випадку COUNT (*) кожна з цих функцій оперує сукупністю значень стовпчика деякої таблиці і створює єдине значення, що визначається так:
COUNT (*) - число значень у стовпчику,
SUM (стовпчик)- сума значень у стовпчику,
AVG (стовпчик) - середнє значення у стовпчику,
MAX (стовпчик)- саме велике значення у стовпчику,
MIN (стовпчик) - саме мале значення у стовпчику.
Для функцій SUM і AVG розглядуваний стовпчик повинен містити числові значення.
Слід відзначити, що тут стовпчик - це стовпчик віртуальної таблиці, в якій можуть міститися дані не тільки з стовпчика базової таблиці, але і дані, отримані шляхом функціонального перетворення і (або) зв'язування символами арифметичних операцій значень з одного або декількох стовпчиків. При цьому вираз, який визначає стовпчик такої таблиці, може бути складним, але не повинен містити SQL-функцій (вложенність SQL-функцій не допускається). Однак з SQL-функцій можна складати будь-які вирази.
Аргументу всіх функцій, окрім COUNT (*), може передувати ключове слово DISTINCT, яке вказує, що значення, які дублюються повинні бути виключені перед тим, як буде застосовуватися функція. Спеціальна ж функція COUNT (*) служить для підрахунку всіх без винятку рядків у таблиці (включаючи дублікати).