sql cookbook笔录(二)
来源:互联网 发布:黑猫警长知乎 编辑:程序博客网 时间:2024/05/17 22:06
第七章 使用数字
7.1 计算平均值
avg函数计算会忽略null值,coalesce(sal,0)函数会返回值列表中,第一个不为null的数。如果这样做,平均值就会改变。
7.2 求最大值,最小值
出现在select列表中的列(不包括聚合函数列),都必须出现在group by 子句中。
7.4 求一个表的行数
使用count(*) 或者常量会把null的行也包含进来,如果count(sal)传入列名,会把这一列是null的行,忽略掉。
7.6 生成累计和
MySql使用标量子查询 查询语句中一定要按取值唯一的列连接,否则会有问题
select e.ename,e.sal,(select sum(d.sal) from emp d whered.empno<=e.empno) as running_total
from emp e order by 3 。
from emp e order by 3 。
7.7 生成累计积
计算各个列的积
把上面函数中的sum函数 换成exp(sum(ln(d.sal))) 。
7.9 计算模式
模式就是出现次数最多的,考虑如下数据
sal
----
700
600
800
800
上面数据的模式就是800.
select sal from emp e group by sal having count(*) >= all(select count(*) from emp e group by sal)。
7.11 求总和的百分比
求特定列占总和的百分比,在sum函数中使用case,相当于条件查询一样。
SELECT sum(case WHEN idA=3 then money end ) as dd,sum(money) from a 这个查询可以查到ida为3
的money总和,也就是除数,后面的sum是所有的总和。
要得到占的百分比,可以这样做。
select sum(case when idA=3 then monty end)/sum(monty) from a 把他们二个相除就好了。
7.12 计算中考虑null值
聚集函数会忽略null值,可以使用coalesce函数来取代是null值得列。得到正确的结果。
7.13 计算不包括最大值和最小值的均值
select avg(sal) from emp where sal not in((select max(sal) from emp),(select min(sal) from emp))
上面的sql会把重复的最大值,最小值全部排除,如果只想排除一个最大值,最小值,可以在总和中
减去一个最大值,一个最小值,再求平均值。
select (sum(sal)-max(sal)-min(sal))/(count(*)-2) from emp
0 0
- sql cookbook笔录(二)
- sql cookbook 笔录(一)
- 工作笔录(二)
- SQL Cookbook
- SQL Cookbook
- 《PHP Cookbook》学习笔记(二)
- Python3 CookBook | 数据结构和算法(二)
- 设计模式笔录(二)
- FIS3学习笔录二
- Object-C学习笔录(二)面向对象
- Rails Cookbook翻译(二)
- jMock Cookbook 中文版二
- Java CookBook(二)
- python cookbook读书笔记二
- Transact-SQL Cookbook
- SQL Cookbook阅读记录
- Sql cookbook学习笔记
- Sql cookbook学习笔记
- 初学unity,关于解决有向匀速运动的问题
- 单例模式
- ios8.0下CLLocationManager定位服务需要授权了
- TextLable,TextView首行缩进问题
- Queue接口的实现与使用
- sql cookbook笔录(二)
- Hadoop MapReduce具体运行过程
- 菜鸟都会使用的在mac上github上传项目
- test
- javascript学习之路--判断浏览器是否支持javascript解释型脚本语言。
- iOS Runtime应用实例(一)类别添加属性
- nginx的hash
- 在tomcat访问时无需填写项目名称的配置
- 单链表的排序