Конспект лекций

Вид материалаКонспект
7.7.Предложение GROUP BY
Дополнительные сведения
7.8.Предложение HAVING
Дополнительные сведения
Подобный материал:
1   ...   16   17   18   19   20   21   22   23   ...   30

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


Объединяет записи с одинаковыми значениями в указанном списке полей в одну запись. Если инструкция SELECT содержит статистическую функцию SQL, например, Sum или Count, то для каждой записи будет вычислено итоговое значение.

Синтаксис


SELECT списокПолей

FROM таблица

WHERE условиеОтбора

[GROUP BY группируемыеПоля]

Ниже перечислены аргументы инструкции SELECT, содержащей предложение GROUP BY:

Элемент

Описание

списокПолей

Имена одного или нескольких полей, из которых отбираются данные, вместе с псевдонимами, статистическими функциями SQL, предикатами отбора (ALL, DISTINCT, DISTINCTROW или TOP) и другими элементами инструкции SELECT.

таблица

Имя таблицы, из которой отбираются записи. Для получения более подробных сведений смотрите описание предложения FROM.

условиеОтбора

Условия отбора записей. Если инструкция содержит предложение WHERE, то ядро базы данных Microsoft Jet выполняет группировку значений после применения к записям условий отбора WHERE.

группируемыеПоля

Имена полей (до 10), которые используются для группировки записей. Порядок имен полей в аргументе группируемыеПоля определяет уровень группировки для каждого из этих полей.

Дополнительные сведения


Предложение GROUP BY является необязательным.

Итоговые значения не рассчитываются, если инструкция SELECT не содержит статистической функции SQL.

Значения Null, которые находятся в полях, заданных в предложении GROUP BY, группируются и не опускаются. Однако статистические функции SQL не обрабатывают значения Null.

Используйте предложение WHERE для исключения записей из группировки, а предложение HAVING для применения фильтра к записям после группировки.

Если поле, включенное в предложение GROUP BY, не является полем типа Memo или объекта ActiveX, оно может содержать ссылку на любое поле, перечисленное в предложении FROM, даже если это поле не включено в инструкцию SELECT, при условии, что инструкция SELECT содержит по крайней мере одну статистическую функцию SQL. Ядро базы данных Jet не поддерживает группировку полей МЕМО или объекта ActiveX.

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

7.8.Предложение HAVING


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

Синтаксис


SELECT списокПолей

FROM таблица

WHERE условиеОтбора

GROUP BY группируемыеПоля

[HAVING условиеГруппировки]

Ниже перечислены аргументы инструкции SELECT, содержащей предложение HAVING:

Элемент

Описание

списокПолей

Имена одного или нескольких полей, из которых отбираются данные, вместе с псевдонимами, статистическими функциями SQL, предикатами отбора (ALL, DISTINCT, DISTINCTROW или TOP) и другими элементами инструкции SELECT.

таблица

Имя таблицы, из которой отбираются записи. Для получения более подробных сведений смотрите описание предложения FROM.

условиеОтбора

Условия отбора записей. Если инструкция содержит предложение WHERE, то ядро базы данных Microsoft Jet выполняет группировку значений после применения к записям условий отбора WHERE.

группируемыеПоля

Имена полей (до 10), которые используются для группировки записей. Порядок имен полей в аргументе группируемыеПоля определяет уровень группировки для каждого из этих полей.

условиеГруппировки

Выражение, определяющее, какие сгруппированные записи следует отображать.

Дополнительные сведения


Предложение HAVING является необязательным.

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


SELECT КодТипа,

Sum (НаСкладе)

FROM Товары

GROUP BY КодТипа

HAVING Sum (НаСкладе) > 100 And Like "МА*";


Предложение HAVING может содержать до 40 выражений, связанных логическими операторами, такими как And и Or.