码迷,mamicode.com
首页 > 数据库 > 详细

转载:SQL中Group By 的常见使用方法

时间:2017-10-11 19:11:52      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:count   分类汇总   order   将不   sql   str   试题   com   htm   

前言
今天逛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;

结果如下: 
技术分享

注意:这里的平均值是根据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

结果如下:
技术分享

 

 

转载:SQL中Group By 的常见使用方法

标签:count   分类汇总   order   将不   sql   str   试题   com   htm   

原文地址:http://www.cnblogs.com/hao-1234-1234/p/7652056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!