MySQL之聚合与排序
来源:互联网 发布:mac firefly安装 编辑:程序博客网 时间:2024/06/06 15:42
对表进行聚合查询
聚合函数
计算表中全部数据行数时,可使用COUNT函数。
-- 用法SELECT COUNT(*) FROM table_name;
计算NULL以外数据的行数
对于COUNT函数,会计算指定列的非NULL行数。
如果有一个表,只有一列,每一行都是NULL
使用COUNT(列名) 得到 0。
使用COUNT(*) 得到 表的行数。
COUNT函数的结果根据参数的不同而不同,COUNT(*)会得到包含NULL的数据行数,而COUNT(<列名>)会得到NULL之外的数据行数。
计算合计值(SUM)
使用SUM可以计算出指定列(可以包含NULL)的指定行的累加值。
聚合函数会将NULL排除在外,但COUNT(*)不会排除NULL。
所有聚集函数
MAX,MIN,SUM,AVG,COUNT
MAX/MIN函数几乎使用所有数据类型的列。SUM/AVG函数只适用于数值类型的列。
使用聚合函数删除重复值(DISTINCT)
所以聚集函数都可以使用DISTINCT。
计算去除重复数据后的数据行数
SELECT COUNT(DISTINCT 列名) FROM 表名;
先计算数据行数再删除重复数据
SELECT DISTINCT COUNT(列名) FROM 表名:############################ 并没有什么用
计算值得的种类,可以在COUNT函数的参数中使用DISTINCT。
对表进行分组
使用GROUP BY子句,对表进行分组。
SELECT 列名 FROM 表名 GROUP BY 列名;
在GROUP BY子句中指定的列称为聚合键或者分组列。
聚合键中包含NULL的情况
对某一列作为聚合键进行切分时,NULL也算做一组。
聚合键中包含NULL时,在结果中会以“不确定”行(空行)来表现。
使用WHERE子句时GROUP BY的执行结果
SELECT 列名1,列名2 FROM 表名 WHERE GROUP BY 列名1,列名2;
首先根据WHERE子句指定条件进行过滤,然后再进行聚合处理。
执行顺序:FROM->WHERE->GROUP BY ->SELECT
与聚合函数和GROUP BY相关错误
1.使用GROUP BY子句时,SELECT子句中不能出现聚合键之外的列名。
GROUP BY指定列名,找到后,可能这个列名有多个相同的,被分为一组,但之外的那一列可能不同,这怎么表示?没法表示,,所以错误。
2.在GROUP BY子句中不能使用SELECT子句中定义的别名。
执行顺序问题哦。
3.GROUP BY子句结果的显示是无序的。
4.只有SELECT子句和HAVING子句(以及ORDER BY子句)中可以用聚合函数。
为聚合结果指定条件
使用HAVING子句。
-- 这是错误的!!!!!!!SELECT shohin_bunrui,COUNT(*) FROM Shoin GROUP BY shohin_bunrui HAVING shohin_mei = '狮子';
shohin_mei不在GROUP BY子句中,把一次聚合后的结果作为HAVING子句起始点的话更容易理解。可以把这种情况想象为使用GROUP BY子句时的SELECT子句。聚合后得到的表不存在shohin_mei这个列。
WHERE子句 = 指定行所对应的条件
HAVING子句 = 指定组所对应的条件
聚合键所对应的条件应该写在WHERE子句中。
ORDER BY子句通常写在SELECT语句末尾。
- MySQL之聚合与排序
- Mysql之聚合函数
- MySQL之聚合查询
- SQL的聚合与排序
- MySQL之聚合函数查询
- maven之聚合与继承
- Maven之继承与聚合
- PostgreSQL基础5--聚合与排序
- MySQL学习19:运算符与函数之信息函数、聚合函数、加密函数
- MySQL(基础篇)之聚合函数
- MySQL学习之聚合函数查询
- 领域驱动设计之聚合与聚合根
- COM原理之包容与聚合
- Maven详解之聚合与继承
- Maven之——聚合与继承
- [150826]Maven详解之聚合与继承
- Python之数据聚合与分组运算
- 数据库之聚合函数与分组
- Matlab批量实现图片文件格式转换
- 安卓GridView不均分解决过程
- acm杭电acm5974 A Simple Math Problem 数论(最大公约数最小公约数,解方程x )
- Android开源库V
- 多线程系列提高(7)--同步工具类
- MySQL之聚合与排序
- 优酷来疯直播安卓控件,支持flv、rtmp,支持添加视频特效等等
- win10 uwp 读写XML
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
- Linux中LCD设备驱动 framebuffer(帧缓冲)
- Java中的Stack
- LNMP搭建
- 三大设计model
- 我收藏的网址