Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие ТБД.doc
Скачиваний:
41
Добавлен:
04.09.2019
Размер:
1.92 Mб
Скачать

3.4.1.4.Использование псевдонимов таблиц

SELECT …

FROM < таблица1 псевдоним1> [, таблица2 псевдоним 2 … ]

WHERE …

Пример:

SELECT R.*, P.ADRES

FROM RASHOD R, POKUPATELI P

WHERE P.POKUP = R.POKUP

3.4.1.5.Предложение order by – определение сортировки

Результирующий набор данных можно отсортировать с помощью предложения:

ORDER BY <список_столбцов>

Пример:

SELECT POKUP, DATRASH, TOVAR, KOLVO

FROM RASHOD

WHERE TOVAR = “Кока-кола”

ORDER BY POKUP, DATARASH

3.4.1.6.Устранение повторяющихся значений

Часто в результирующий НД необходимо включать не все записи с одинаковым значением комбинации столбцов. Для этого используется ключевое слово

DISTINCT

Пример:

SELECT DISTINCT TOVAR

FROM RASHOD

Замечание:

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

3.4.1.7.Расчет значений вычисляемых столбцов

Для расчета значений вычисляемых столбцов результирующего НД используются арифметические выражения. При этом в списке возвращаемых столбцов после SELECT вместо имени вычисляемого столбца указывается выражение:

SELECT [DISTINCT | ALL ]

{ * | <значение1> [,<значение2> …], <выражение1>[AS <имя_столбца>] …}

FROM <таблица1> [ , <таблица2> … ]

Пример:

SELECT R.*, T.ZENA, R.KOLVO*T.ZENA AS STOIM

FROM RASHOD R, TOVARY T

WHERE R.TOVAR = T.TOVAR

------------------------

AS STOIM – необязательное присвоение имени вычисляемому столбцу

3.4.1.8.Агрегатные функции

Агрегатные функции предназначены для вычисления итоговых значений операций над всеми записями НД. К агрегатным относятся следующие функции:

  • COUNT(<выражение>) – число вхождений выражения в результирующий НД;

  • SUM(<выражение>) – суммирует значение выражения;

  • AVG(<выражение>) – находит среднее значение;

  • MAX(<выражение>) – определяет максимальное значение;

  • MIN(<выражение>)- определяет минимальное значение.

Примеры:

SELECT COUNT(DISTINCT POKUP) AS COUNT_POKUP

FROM RASHOD;

-----------------------

SELECT SUM(R.KOLVO*T.ZENA) AS OBS_ZENA

FROM RASHOD R, TOVARY T

WHERE (R.TOVAR = T.TOVAR)

3.4.1.9.Группировка записей

Иногда требуется получить агрегированные значения не по всему результирующему НД, а по каждой из входящих в него групп записей, характеризующихся одинаковым значением какого-либо столбца. Для этого перед предложением WHERE вводится предложение:

GROUP BY столбец [ , столбец1 … ]

Примеры:

SELECT R.TOVAR, SUM(R.KOLVO*T.ZENA)

FROM RASHOD R, TOVARY T

WHERE R.TOVAR = T.TOVAR

GROUP BY R.TOVAR, R.DAT_RASH

---------------------------------------------------

SELECT DAT_RASH, COUNT(DISTINCT POKUP)

FROM RASHOD

GROUP BY DAT_RASH

3.4.1.10.Наложение ограничений на группировку записей

Если нужно в результирующем НД выдавать агрегацию не по всем группам, а только по группам, которые отвечают некоторому условию то после GROUP BY указывается предложение:

HAVING <агрегатная функция> <отношение> <значение>

Агрегатная функция – одна из функций MIN, MAX, AVG, SUM

Отношение – одна из операций отношения.

Значение – константа, результат вычисления выражения или единичное значение, возвращаемое вложенным оператором SELECT.

Пример:

SELECT POKUP, MIN(KOLVO)

FROM RASHOD

GROUP BY POKUP

HAVING MIN (KOLVO) >= 100

Отличие HAVING от WHERE:

  • HAVING – исключает из результирующего НД группы с результатами агрегированных значений;

  • WHERE – исключает из расчета агрегатных значений по группировкам записи, не удовлетворяющие условию;

  • В условии поиска WHERE нельзя указывать агрегатную функцию.