Команда GROUP BY

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

В нашу задачу входит выявить средний стаж сотрудников для каждого имеющегося отдела. Это мы можем выявить таким запросом:

SELECT AVG(Стаж), ОтделFROM LichData, DoljnostWHERE Ключ = СотрудникGROUP BY Отдел;

Как видите, команда GROUP BY используется после команды WHERE и группирует записи по значению поля "Отдел". В результате получим таблицу из двух полей. Первое поле будет сформировано агрегатной функцией, второе поле "Отдел" из таблицы Doljnost. Для каждого отдела будет рассчитано среднее значение поля "Стаж".

Команда GROUP BY позволяет группировать записи не только по одному, но и по множеству полей. Предположим, одну и ту же должность могут иметь несколько человек (например, пять бухгалтеров в бухгалтерии). Нам требуется найти самого старого сотрудника не только по отделу, но и по занимаемой должности. Нас выручит следующий запрос:

SELECT Отдел, Должность, MAX(Стаж)FROM LichData, DoljnostWHERE Ключ = СотрудникGROUP BY Отдел, Должность;

В результате мы получим набор данных, сгруппированный не только по отделам, но и по должностям. Если должность занимает только один человек, то мы получим его стаж. Если несколько - то наибольший из них.

Команда DISTINCT | ALL

Команда DISTINCT предназначена для удаления избыточных (дублирующих) данных. Предположим, нам нужно получить список отделов на предприятии. Мы можем воспользоваться запросом:

SELECT ОтделFROM Doljnost;

Однако поле "Отдел" не является уникальным в этой таблице, то есть, если в отделе работает десяток специалистов с разными должностями, то мы получим десяток повторяющихся записей. Команда DISTINCT позволяет убрать такие избыточные данные:

SELECT DISTINCT ОтделFROM Doljnost;

В результате мы получим все названия имеющихся отделов, но эти названия не будут повторяться.

Обратной командой является ALL, принятая по умолчанию. Если вы не используете DISTINCT, то автоматически используется ALL (то есть, показываются все записи).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: