教为学:Oracle SQL学习之路(四):分析函数之统计(二)
2014-09-02 00:00
357 查看
教为学:Oracle SQL学习之路(四):分析函数之统计(二)
前言
关于分析函数的博文我已经写了好几篇了。可是一直对自己所写的东西不怎么满意,说不清楚问题具体在哪里,最大的问题就是我只是觉得不满意,却完全搞不清楚,自己不满意在哪里,该说清楚的没有说清楚?还是内容太过单薄。
MAX和MIN一看就知道什么意思。
SQL:
select
distinct manager_id,
max(salary) over(partition by manager_id ) as max_salary
from
employees order by manager_id;
执行结果(节选):
MANAGER_ID | MAX_SALARY |
100 | 17000 |
101 | 12008 |
102 | 9000 |
103 | 6000 |
108 | 9000 |
114 | 3100 |
120 | 3200 |
121 | 4200 |
122 | 3800 |
123 | 4000 |
124 | 3500 |
这个问题其实很大的程度上让初学者困惑,因为一般理论上,我们总觉得MAX就只有一个,为什么会有那么多?特别是在没有分组的情况下。
我们把上面的SQL改写一下。
select
manager_id,
max(salary) over(partition by manager_id ) as max_salary
from
employees
where
manager_id='100'
;
结果:
MANAGER_ID | MAX_SALARY |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
100 | 17000 |
select
manager_id
from
employees
where
manager_id='100'
;
再上结果集:
MANAGER_ID |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
100 |
你完全可以把分析函数看作强行加入一个SQL的外来者,这个外来者的数据必须按照规定服从原有数据。
也就是说,它的行数是由去掉的分析函数以后的SQL决定的。
Syntax
MAX![](http://static.oschina.net/uploads/img/201409/02114213_Vhgf.png)
MIN
![](http://static.oschina.net/uploads/img/201409/02114213_a2JS.png)
FIRST_VALUE
![](http://static.oschina.net/uploads/img/201409/02114213_tdZ8.png)
LAST_VALUE
![](http://static.oschina.net/uploads/img/201409/02114213_rwPT.png)
用法都比较简单。
功能上,我个人认为MAX是FIRST_VALUE的一个子集。
相关文章推荐
- 教为学:Oracle SQL学习之路(三):分析函数之统计
- 教为学:Oracle SQL学习之路(四):分析函数之统计(二)
- 教为学:Oracle SQL学习之路(三):分析函数之统计
- 教为学:Oracle SQL学习之路(一):分析函数之排名
- 教为学:Oracle SQL学习之路(一):分析函数之排名
- 教为学:Oracle SQL学习之路(五):分析函数之小结
- 教为学:Oracle SQL学习之路(五):分析函数之小结
- 利用Oracle内置分析函数进行高效统计汇总(2)
- oracle 统计分析函数之lead和lag
- 教为学:Oracle SQL学习之路(二):分析函数之相邻
- 转:oracle 统计分析函数之lead
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- oracle 统计/分析函数
- 20090901_ 利用Oracle内置分析函数进行高效统计汇总
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
- oracle 统计/分析函数
- 利用Oracle内置分析函数进行高效统计汇总
- 利用Oracle内置分析函数进行高效统计汇总
- oracle中LAG()和LEAD()等分析统计函数的用法(统计月增长率)