Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
доп.docx
Скачиваний:
37
Добавлен:
26.03.2016
Размер:
115.88 Кб
Скачать

4.2.2.6 Предложение group by.

Предложение GROUP BY разбивает результирующий набор на группы на основании значений в столбцах group_by_list.

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

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

Синтаксис

[ GROUP BY [ ALL ] group_by_expression [ ,...n ]

[ WITH { CUBE | ROLLUP } ]

Аргументы:

- ALL

Включает все группы и результирующие наборы (даже не имеющие строк), которые удовлетворяют условию поиска заданного в предложении WHERE. Если задан аргумент ALL, для сводных столбцов групп, не удовлетворяющие условию поиска, возвращаются значения NULL. Аргумент ALL нельзя указывать с операторами CUBE или ROLLUP.

Предложение GROUP BY ALL не поддерживается в запросах с доступом к удаленным таблицам, если в запросе присутствует также предложение WHERE.

- group_by_expression

Выражение, по которому выполняется группирование. Аргумент group_by_expression также называется столбцом группирования. Аргумент group_by expression может быть столбцом или нестатистическим выражением, которое ссылается на столбец, возвращаемый предложением FROM. Псевдоним столбца, который определяется в списке выбора, не может использоваться для указания столбца группирования.

4.2.2.7 Предложение having.

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

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

Синтаксис

[ HAVING < search condition > ]

Аргументы:

- < search_condition >

Определяет условие поиска, которому должна соответствовать группа или статистическое выражение. Когда предложение HAVING используется в сочетании с GROUP BY ALL, предложение HAVING заменяет ALL.

В следующем примере, который использует простое предложение HAVING, из таблицы SalesOrderDetail извлекается сумма всех полей SalesOrderID, значение которых превышает $100000.00.

USE AdventureWorks ;

GO

SELECT SalesOrderID, SUM(LineTotal) AS SubTotal

FROM Sales.SalesOrderDetail

GROUP BY SalesOrderID

HAVING SUM(LineTotal) > 100000.00

ORDER BY SalesOrderID ;

4.2.2.8 Предложение order by.

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

Предложение ORDER BY не может применяться в представлениях, встроенных функциях, производных таблицах и вложенных запросах, если не указано предложение TOP.

Синтаксис

[ ORDER BY

{

order_by_expression

[ COLLATE collation_name ]

[ ASC | DESC ]

} [ ,...n ]

]

Аргументы:

- order_by_expression

Указывает столбец, по которому должна выполняться сортировка.

- COLLATE {collation_name}

Указывает, что операция ORDER BY должна выполняться в соответствии с параметрами сортировки, указанными в аргументе collation_name, но не в соответствии с параметрами сортировки столбца, определенных в таблице или представлении.

- ASC

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

- DESC

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