Секция between
Секция between определяет верхнюю и нижнюю границы интервала. Она применяется в случаях, когда вам известны минимальное и максимальное значения искомой величины.
Если нижняя граница больше верхней, то не возвращается ни одна запись.
Выражения должны принадлежать к типам данных, неявно преобразуемым друг в друга, или их явное преобразование должно выполняться в команде select (преобразование типов данных рассмотрим позже).
Пример использования секции between продемонстрировано в следующем фрагменте:
SELECT Название, Цена FROM Книги
WHERE Цена BETWEEN 10 AND 20
Команда находит все записи, у которых столбец price больше или равен 10 и меньше или равен 20.
Ключевое слово NOT
Ключевое слово not может включаться в любое сравнение секции where. В этом случае проверяется условие, противоположное указанному.
Пример:
SELECT Название, Цена FROM Книги
WHERE Цена NOT BETWEEN 10 AND 20
Команда возвращает все записи, у которых значение Цена либо меньше 10, либо больше 20.
Проверка NULL
Для проверки, является ли значение колонки null - значением, используется выражение IS NULL:
SELECT * FROM Товары WHERE Страна-производитель IS NULL
внимание!
He путайте неопределенное значение null с пустой текстовой строкой.
Пустая текстовая строка (" ") не является null - значением.
Пример. Получим все товары, для которых указана Страна-призводитель:
SELECT * FROM Товары WHERE Страна-производитель IS NOT NULL
Секция ORDER BY
При выборке данные возвращаются в порядке их нахождения в SQL Server.
Ключевое слово order by позволяет определить порядок возвращения записей.
Например, следующее выражение возвращает список автомобилей, отсортированный по номерам:
SELECT Цвет, Номер, Марка FROM Автомобили ORDER BY Номер
Столбцы, определяющие порядок записей, могут указываться с помощью заголовков столбцов, имен столбцов (даже если они отсутствуют в списке выборки) и целых чисел, определяющих порядок столбцов в списке выборки.
Можно определять порядок сортировки (по возрастанию или по убыванию), используя ключевые слова asc и desc.
По умолчанию данные сортируются по возрастанию (asc).
Ключевые слова asc и desc относятся лишь к одному столбцу.
Итоговый набор можно отсортировать по нескольким столбцам.
Например, следующее выражение возвращает список автомобилей, отсортированный по номерам в обратном порядке, а потом отсортированный по марке автомобиля:
SELECT Цвет, Номер, Марка FROM Автомобили
ORDER BY Номер DESC, Марка
Секция group by
Секция group by используется в сочетании с агрегатными функциями для получения обобщающих данных.
Агрегатная функция обрабатывает данные многих записей, вычисляет обобщающий результат, возвращаемый как часть списка выборки.
При использовании group by все столбцы итогового набора либо являются агрегатными функциями, либо включаются в секцию group by.
Пример.
SELECT ID_товара, Название_товара, SUM(Стоимость) AS ‘Сумма заказа’
FROM Товар
GROUP BY ID_товара, Название_товара
ORDER BY Название_товара
В этом примере в итоговом наборе возвращается id_товара, название товара и его суммарная стоимость.
Здесь используется агрегатная функция SUM , которая возвращает сумму всех значений в столбце.
Агрегатные функции не могут работать со значениями типа null, за исключением функции COUNT (*).
Список всех агрегатных функций приведен в таблице 3.
Таблица 3. Агрегатные функции
№ |
Функция |
Описание |
|||
1 |
COUNT ( [ALL | DISTINCT] выражение ) |
Вычисляет количество значений в столбце, отличных от NULL |
|
||
2 |
COUNT (*) |
Вычисляет количество выбранных записей. Эта функция учитывает null- значения |
|
||
3 |
SUM ( [ALL | DISTINCT] выражение) |
Вычисляет общую сумму в числовом столбце |
|
||
4 |
AVG ([ALL | DISTINCT] выражение) |
Вычисляет среднее арифметическое разных значений в столбце |
|
||
5 |
MAX ( выражение ) |
Определяет максимум среди выбранных значений |
|
||
6 |
MIN ( выражение ) |
Определяет минимум среди выбранных значений |
|
||
7 |
STDEV ( выражение ) |
Вычисляет статистическое стандартное отклонение для всех значений выражения |
|
||
8 |
STDEVP ( выражение ) |
Возвращает смешанную оценку стандартного отклонения (квадратный корень от значения, возвращаемого функцией varp) для всех значений столбца |
|
||
9 |
VAR ( выражение ) |
Возвращает несмешанную оценку дисперсии величин для всех значений выражения |
|
||
10 |
VARPD ( выражение) |
Возвращает смешанную оценку дисперсии величин для всех значений выражения |
|
|
|
11 |
CHECKSUM (* | выражение [, ...n] ) |
Возвращает контрольную сумму для строки таблицы или списка выражений. Эта функция появилась только в SQL Server 2005 |
|
|
|
12 |
CHECKSUM_AGG ( [ALL | DISTINCT] выражение) |
Возвращает контрольную сумму значения выражения. Эта функция появилась только в SQL Server 2005 |
|
|
В общем случае секция group by имеет следующий синтаксис:
GROUP BY [ALL] список_группировки [WITH CUBE | ROLLUP]