SQL HAVING-предложения
Предложение HAVING
Причина добавления предложения HAVING в SQL состоит в том, что ключевое слово WHERE нельзя использовать с агрегатными функциями.
Предложение HAVING позволяет фильтровать сгруппированные данные после группировки.
Синтаксис SQL HAVING
Синтаксис SQL HAVING
Описание параметра:
column1: Столбец, который нужно извлечь.aggregate_function(column2): Агрегатная функция, такая как SUM, COUNT, AVG и т. д., применённая кcolumn2значение.table_name: Таблица, из которой извлекаются данные.GROUP BY column1: Согласноcolumn1Сгруппируйте данные по значениям столбца.HAVING condition: Условие, используемое для фильтрации сгруппированных результатов. В результирующий набор будут включены только группы, удовлетворяющие условию.
Демонстрационная база данных
В этом руководстве мы будем использовать образец базы данных EXAMPLE.
Ниже приведены данные, выбранные из таблицы "Websites":
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | Example | http://www.example.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
Ниже приведены данные из таблицы журнала доступа к веб-сайту "access_log":
mysql> SELECT * FROM access_log; +-----+---------+-------+------------+ | aid | site_id | count | date | +-----+---------+-------+------------+ | 1 | 1 | 45 | 2016-05-10 | | 2 | 3 | 100 | 2016-05-13 | | 3 | 1 | 230 | 2016-05-14 | | 4 | 2 | 10 | 2016-05-14 | | 5 | 5 | 205 | 2016-05-14 | | 6 | 4 | 13 | 2016-05-15 | | 7 | 3 | 220 | 2016-05-15 | | 8 | 5 | 545 | 2016-05-16 | | 9 | 3 | 201 | 2016-05-17 | +-----+---------+-------+------------+ 9 rows in set (0.00 sec)
Пример SQL HAVING
Теперь мы хотим найти веб-сайты с общим числом посещений больше 200.
Мы используем следующую инструкцию SQL:
Пример
Выполнение приведённого выше SQL даёт следующий вывод:
Теперь мы хотим найти веб-сайты с общим числом посещений больше 200 и рейтингом Alexa меньше 200.
Мы добавляем обычное условие WHERE в SQL-запрос:
Пример
Выполнение приведённого выше SQL даёт следующий вывод: