您的位置:首页 > 其它

第六章: 聚合查询 与 分组

2016-01-11 22:51 295 查看

第六章: 聚合查询 与 分组



概述

在查询分析的SQL中我们经常会对一些数据进行统计查询。比如统计某个班有多少个学生、全班总分多少、平均分多少、最高分是多少、最低分是多少。要实现这些数据的统计就需要要用到SQL提供的聚合函数。

聚合函数的分类

COUNT:统计行数量

SUM:获取单个列的合计值

AVG:计算某个列的平均值

MAX:计算列的最大值

MIN:计算列的最小值

注: 聚合函数不能与其他列搭配使用只能单列使用

执行行和列计数(COUNT)

行计数可以统计返回的结果中有多少行数据

标准结构:SELECT COUNT(<计数规范>) FROM <表名>


*
计数所有选择的行,包括NULL值

ALL 列
计数指定列的所有的非空值行。如果仅仅是指定列而不带ALL或者DISTINCT,这是默认操作。

DISTINCT 列 计数指定列的所有唯一非空值行。


计数规范(*)

* 表示统计所有行,包括NULL值。

举例


统计班上一共有多少个学生


SELECT COUNT(*) FROM t_student


也可以加入查询条件。例如:统计男生有多少人?
SELECT COUNT(*) FROM t_student WHERE 性别=‘男

——返回列合计值(sum)
语法:select sum(计数规范) from 表名;
与count的区别:没有*,只能是求整型,和浮点数;

——获取列的平均值(avg)

语法:select avg (平均值规范 )from 表名;
注;会过滤掉null的值,可以使用all 和distinct

[b]——返回最大值和最小值:

[/b]
[b]语法:select max(或min)<最大(小)值规范> from 表名;[/b]
注:会排除为null的值,没有 * ,all ,distinct

——数据分组:group by
语法:select 列A,聚合函数(聚合函数规范) from 表名
where 过滤条件
group by 列;

注 : where 后面不能跟聚合函数!!!!

——使用having:
注:后面跟聚合函数语句

sql语句的执行顺序:
select子句;
from 子句;
where子句;
group by 子句;
having 子句;
Oder by 子句;
limit 子句;

where与having的区别:二者都是过滤条件,where是分组前运行(过滤非聚合函数);having 是在分组后运行(只能用于聚合函数的过滤);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: