SQL HAVINGClauses
HAVING Clause
The reason for adding the HAVING clause in SQL is that the WHERE keyword cannot be used with aggregate functions.
The HAVING clause allows us to filter the grouped data after grouping.
SQL HAVING Syntax
SQL HAVING Syntax
Parameter description:
column1: The column to be retrieved.aggregate_function(column2): An aggregate function, such as SUM, COUNT, AVG, etc., applied tocolumn2the value of.table_name: The table from which to retrieve data.GROUP BY column1: According tocolumn1Group the data based on the values of the column.HAVING condition: A condition used to filter the grouped results. Only groups that satisfy the condition will be included in the result set.
Demo Database
In this tutorial, we will use the EXAMPLE sample database.
The following is data selected from the "Websites" table:
+----+--------------+---------------------------+-------+---------+ | 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 | +----+---------------+---------------------------+-------+---------+
The following is the data from the "access_log" website access log table:
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 Example
Now we want to find websites with a total number of visits greater than 200.
We use the following SQL statement:
Example
Executing the above SQL produces the following output:
Now we want to find websites with a total number of visits greater than 200 and an Alexa ranking less than 200.
We add an ordinary WHERE clause to the SQL statement:
Example
Executing the above SQL produces the following output: