TOM高效设计不明白之处,请大家指导,谢谢!

[复制链接]
查看11 | 回复4 | 2006-9-6 01:01:55 | 显示全部楼层 |阅读模式
TOM高效设计不明白之处
请大家指导,谢谢!
某员工的工资占部门总工资数的百分比,以及占总工资数的百分比(如部门Y的员工X的工资为部门Y的10%,为公司总工资数的1%)在ORACLE中完成此工作的正确方法是用分析函数,如下
select deptno,

ename,

sal,

sum(sal)over (paration by deptno order by sal,ename) cum_sal,

round(100*ratio_to_report(sal) over(partion by detno),1) pct_dept,

round(100*ratio_to_report(sal) over() ,1) pct_overall
from emp
order by deptno,sal
/

对此我不明白
1、ratio_to_report是何含义?难道是ORACLE自带的函数吗?
2、 over() 和over(partion by detno) 主要是因为前面无需要分类,所以写空值是吗?
3、round是整函数,这里一定有必要用round吗?
回复

使用道具 举报

千问 | 2006-9-6 01:01:55 | 显示全部楼层
1、ratio_to_report是何含义?难道是ORACLE自带的函数吗?
是用來求百分比的分析函數
2、 over() 和over(partion by detno) 主要是因为前面无需要分类,所以写空值是吗?
加不加partition by 隻是看你要不要分區,,相應的還有就是order by [nulls first|last]
3、round是整函数,这里一定有必要用round吗?
round是四舍五入函數!
回复

使用道具 举报

千问 | 2006-9-6 01:01:55 | 显示全部楼层
看看分析函数。
引用页 http://www.itpub.net/attachment.php?postid=5600186
回复

使用道具 举报

千问 | 2006-9-6 01:01:55 | 显示全部楼层
最初由 lfree 发布
[B]看看分析函数。
引用页 http://www.itpub.net/attachment.php?postid=5600186 [/B]

这个地址打不开?
回复

使用道具 举报

千问 | 2006-9-6 01:01:55 | 显示全部楼层
也可以看看Oracle官方文档中的分析函数部分:
\server.101\b10759\functions001.htm#i81407
Oracle® Database SQL Reference
SQL Functions
Analytic Functions
Analytic functions are commonly used in data warehousing environments. In the list of analytic functions that follows, functions followed by an asterisk (*) allow the full syntax, including the windowing_clause.

AVG *
CORR *
COVAR_POP *
COVAR_SAMP *
COUNT *
CUME_DIST
DENSE_RANK
FIRST
FIRST_VALUE *
LAG
LAST
LAST_VALUE *
LEAD
MAX *
MIN *
NTILE
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
RATIO_TO_REPORT
REGR_ (Linear Regression) Functions *
ROW_NUMBER
STDDEV *
STDDEV_POP *
STDDEV_SAMP *
SUM *
VAR_POP *
VAR_SAMP *
VARIANCE *
See Also:
Oracle Data Warehousing Guide for more information on these functions and for scenarios illustrating their use
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行