
前言 今天逛java吧看到了一个面试题, 于是有了今天这个文章, 回顾下Group By的用法. 题目如下: Select name from table group by name having count(*) = 10;

解释: 根据(by)一定的规则进行分组(Group) 所以就是根据题中的name进行分组, 然后把name相同的数量为10的记录都查找出来. 示例: 表结构:

执行结果:

如果再添加一条记录: wangmeng. 那么 就查询不到了. 只有 相同username count 为10的才会被查询出来.
1、概述 Group By 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
2,原始表

3,实例说明 示例1
SQL语句如下:
select category, sum(count) as 数量之和
from groupbyDemo
group by category结果如下:

看到结果大家都应该知道是怎样回事吧? 实际上就是分类汇总. 示例2 SQL语句如下:
SELECT category, SUM(COUNT) AS 数量之和, summary
FROM groupByDemo
GROUP BY category
ORDER BY category desc结果如下:

说明, 这里加的 查询summary 会显示数据的第一条记录. 4,Group By与聚合函数 常用的聚合函数: count, sum, avg, max, min 示例1 SQL语句如下:
SELECT category, AVG(COUNT) AS 平均值 FROM groupByDemo GROUP BY category;结果如下:

5, Having与Where的区别 (1)where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。 (2)having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
示例1 SQL代码:
SELECT category, SUM(COUNT) AS 数量之和 FROM groupByDemo
GROUP BY category
HAVING SUM(COUNT) > 18结果如下:

示例2 SQL语句:
SELECT category, SUM(COUNT)FROM groupByDemo
WHERE COUNT > 10
GROUP BY category
HAVING SUM(COUNT) > 8结果如下:

大概就是这么多了, 如果再有其他的情况会再次更新的.