取平均值函数
AVG 返回expr的平均值.如果你指定DISTINCT, 那么你只能指定analytic_clause 的query_partition_clause. The order_by_clause 和 windowing_clause 不允许使用。
下面的例子对于employees表中的每个雇员,计算同一个经理的平均薪水,其恰好处于该雇员的前面和后面被雇佣的(该平均值由当前员工和与之具有相同经理的前一个和后一个三者的平均数得来)。
avg函数如果不加order子句,窗口为每个partition分组内的数据记录集合,如果加了order子句,则默认窗口为rows between unbounded preceding and current row.
Kochhar (17000+17000)/2
De haan :(17000+17000+11000)/3
Raphaely:(17000+11000+7900)/3……
求份额函数:
NTILE
功能描述:将一个组分为"表达式"的散列表示,例如,如果表达式=4,则给组中的每一行分配一个数(从1到4),如果组中有20行,则给前5行分配1,给下5行分配2等等。如果组的基数不能由表达式值平均分开,则对这些行进行分配时,组中就没有任何percentile的行数比其它percentile的行数超过一行,最低的percentile是那些拥有额外行的percentile。例如,若表达式=4,行数=21,则percentile=1的有5行,percentile=2的有5行等等。
SAMPLE:下例中把6行数据分为4份
SELECT last_name, salary,
NTILE(4) OVER (ORDER BY salary DESC) AS quartile FROM employees
WHERE department_id = 100;
LAST_NAME SALARY QUARTILE
--------- ---------- ----------
Greenberg 12000 1
Faviet 9000 1
Chen 8200 2
Urman 7800 2
Sciarra 7700 3
Popp 6900 4
报表处理函数
RATIO_TO_REPORT
功能描述:该函数计算expression/(sum(expression))的值,它给出相对于总数的百分比,即当前行对sum(expression)的贡献。可以直接取得所占的份额。如果 expr 评估为null, 那么ratio-to-report的值也为空.
SAMPLE:下例计算每个员工的工资占该类员工总工资的百分比
SELECT last_name, salary, RATIO_TO_REPORT(salary) OVER () AS rr
FROM employees
WHERE job_id = 'PU_CLERK';
LAST_NAME SALARY RR
-------- ---------- ----------
Khoo 3100 .223021583
Baida 2900 .208633094
Tobias 2800 .201438849
Himuro 2600 .18705036
Colmenares 2500 .179856115
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7177735/viewspace-710103/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7177735/viewspace-710103/