Delphi 3 и создание приложений баз данных


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


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

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

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

Пример.

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

SELECT POKUP, MIN(KOLVO) FROM RASHOD

GROUP BY POKUP HAVING MIN(KOLVO) >= 100

Если не указывать

HAVING MIN(KOLVO) >= 100

будут выданы все группы (рис. 25.19).

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

Пример.

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

Содержание раздела