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

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

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

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

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

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

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

Если из группы одинаковых записей нужно учитывать только одну, перед выражением в скобках включают слово DISTINCT

COUNT(DISTINCT POKUP)

Чаще всего в качестве выражения выступают имена столбцов. Выражение может вычисляться и по значениям нескольких таблиц.

Пример. Подсчитать число покупателей, приобретавших товары на складе

SELECT COUNT(DISTINCT POKUP) AS COUNT_POKUP

FROM RASHOD

Пример. Вычислить общую стоимость отпущенных товаров за 10.01.97

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

FROM RASHOD R, TOVARY T

WHERE (R.TOVAR = T.TOVAR) AND

(R.DAT RASH = "10-JAN-1997")

Предложение WHERE: задание сложных условий поиска

Ранее были рассмотрены простые варианты задания условия поиска в предложении WHERE (сравнение столбца с константой и внутреннее соединение). Однако условия поиска могут быть достаточно сложными, чему способствует и сам синтаксис оператора SELECT. Рассмотрим основные конструкции для построения сложных условий поиска.

Использование логических выражений

Может указываться более одного условия поиска. В этом случае они объединяются между собой при помощи логических операторов AND, OR и NOT.

Пример. Выдать все записи из таблицы RASHOD, для каждого товара выдать его цену из таблицы TOVARY, для каждого покупателя выдать его город из таблицы POKUPATEL.

SELECT R.*, T.ZENA, P.ADRES

FROM RASHOD R, TOVARY T, POKUPATELI P

WHERE (R.TOVAR = T.TOVAR) AND (R.POKUP = P.POKUP)

Пример. Выдать записи из таблицы RASHOD плюс соответствующую каждому товару цену из таблицы TOVARY. При этом количество отпуска товара должно быть не больше 30 или должно быть не меньше 3000, и название покупателя должно присутствовать.

SELECT R.*, T.ZENA FROM RASHOD R, TOVARY T

WHERE (R.TOVAR = T.TOVAR) AND ((R.KOLVO <=30) OR (R.KOLVO >= 3000)) AND (R.POKUP IS NOT NULL)

ORDER BY R.KOLVO


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



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