Использование between

Лабораторная работа

«Оператор SELECT»

Часть2

Оператор SELECT имеет следующий формат:

SELECT [DISTINCT | ALL] {* | <значение1> [, <значение2>...]}

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

[WHERE <условия_поиска>]

[GROUP BY столбец [COLLATE collation} [,столбец! [COLLATE collation]...]

[HAVING < условия поиска >]

[UNION <оператор select>]

[PLAN <план выполнения_запроса>]

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

Предложение HAVING - наложение ограничений на группировку записей

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

HAVING < условия_поиска >

где условия поиска указываются по тем же правилам, что и условия поиска для предложения WHERE, за важным исключением: в условии поиска предложения HAVING можно указывать статистические (агрегатные) функции, чего нельзя делать в условии поиска для WHERE.

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

SELECT POKUP, MIN(KOLVO) FROM RASHOD

GROUP BY POKUP HAVING MIN(KOLVO) >= 100

Если не указывать HAVING с условием, будут выданы все группы.

Можно указывать различные агрегатные функции для возвращаемого столбца и условия в HAVING.

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

SELECT POKUP, SUM(KOLVO) FROM RASHOD

GROUP BY POKUP HAVING MIN(KOLVO) >= 100

ЗАМЕЧАНИЕ. Следует помнить, чем условие в HAVING отличается от условия в WHERE: в условии поиска WHERE нельзя указывать агрегатные функции.

Пример. Выдать из таблицы RASHOD дату, товар, стоимость отпущенного товара. При этом показывать только записи, у которых стоимость отпущенного товара больше 120

SELECT R.DAT_RASH, R.TOVAR, (R.KOLVO * T.ZENA) AS STOIM

FROM RASHOD R, TOVARY T

WHERE (R.TOVAR = T.TOVAR) AND ((R.KOLVO * T.ZENA) > 120)

ORDER BY R.DAT_RASH

Использование BETWEEN

В условие поиска можно указать, что некоторое значение (столбец или вычисление значения выражения) должно находиться в интервале между значением1 и значением2.

<значение> [NOT] BETWEEN <значение1> AND <значение2>

Зарезервированное слово NOT инвертирует условие (значение не должно находиться в интервале между значением! и значением 2).

Пример. Выдать сведения обо всех отпусках товара, где количество отпущенного товара (в единицах) лежит в диапазоне 1000..3000

SELECT * FROM RASHOD

WHERE KOLVO BETWEEN 1000 AND 3000


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



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