GROUP BY(分组条件) 语句用于**结合聚合函数,根据一个或多个列对结果集进行分组。
通常查询目标只有一个列+聚集函数,很少有两个属性名一起,因为属性相同元组不同无法分组**
sql依据分组条件中的属性名进行分组,所有具有相同属性的元组分为一组,所以常与聚集函数联合来统计相同属性下有多少元组,进行数据分析。

分组后聚集函数将作用与每一个组,即每一个组都有一个函数值
例子:

  1. SELECT site_id, SUM(access_log.count) AS nums
  2. FROM access_log GROUP BY site_id;

Group By...Having语句 - 图1

HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。与where功能类似,只输出满足条件的值

SQL HAVING 实例

现在我们想要查找总访问量大于 200 的网站。
我们使用下面的 SQL 语句:

实例

  1. SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log
  2. INNER JOIN Websites
  3. ON access_log.site_id=Websites.id)
  4. GROUP BY Websites.name
  5. HAVING SUM(access_log.count) > 200;

执行以上 SQL 输出结果如下:
Group By...Having语句 - 图2