Компьютеры
и программирование

SQL HAVING - получение данных с интересующими значениями

Оператор SQL HAVING применяется вместе с оператором GROUP BY для получения данных из таблицы базы, соответствующих определённым значениям результатов, возвращаемых агрегатными функциями.

Пример 1. Есть база данных портала объявлений. В ней есть таблица Ads, содержащая данные об объявлениях, поданных за неделю. Столбец Category содержит данные о больших категориях объявлений (например, Недвижимость), а столбец Parts - о более мелких частях, входящих в категории (например, части Квартиры и Дачи являются частями категории Недвижимость). Столбец Units содержит данные о количестве поданных объявлений, а столбец Money - о денежных суммах, вырученных за подачу объявлений.

CategoryPartUnitsMoney
ТранспортАвтомашины11017600
НедвижимостьКвартиры8918690
НедвижимостьДачи5711970
ТранспортМотоциклы13120960
СтройматериалыДоски687140
ЭлектротехникаТелевизоры1278255
ЭлектротехникаХолодильники1378905
СтройматериалыРегипс11211760
ДосугКниги966240
НедвижимостьДома479870
ДосугМузыка1177605
ДосугИгры412665

Используя операторы SQL HAVING и GROUP BY, определить категории, в которых за подачу объявлений выручено более 20000. Пишем следующий запрос:

SELECT Category, SUM(Money) AS Money FROM Ads GROUP BY Category HAVING SUM(Money)>20000

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

CategoryMoney
Недвижимость40530
Транспорт38560

Пример 2. База данных и таблица - те же, что и в примере 1.

Используя операторы SQL HAVING и GROUP BY, требуется вывести категории, в какой-либо части которых минимальное количество поданных объявлений не превышает 100. Для этого пишем следующий запрос:

SELECT Category, Units, MIN(Units) AS Minimum FROM Ads GROUP BY Category HAVING MIN(Units)<100

Результатом будет следующая таблица:

CategoryPartMinimum
ДосугИгры41
НедвижимостьДома47
СтройматериалыДоски68

Пример 3. База данных и таблица - те же, что и в предыдущих примерах.

Используя операторы SQL HAVING и GROUP BY, требуется вывести категории объявлений, в которых более двух частей. Пишем следующий запрос:

SELECT Category, Part FROM Ads GROUP BY Category HAVING COUNT(*)>2

Результатом будет следующая таблица:

CategoryPart
ДосугКниги
ДосугМузыка
ДосугИгры
НедвижимостьКвартиры
НедвижимостьДачи
НедвижимостьДома

Поделиться с друзьями

Другие темы в блоке "Реляционные базы данных"