用分析函数来得出的的工资 占 部门比 工资占 公司 比
--包括工名,部门 工资 需要得出部门工资的总数,某员工的工资 占所在部门总工资数的百分比,以及占总工资数的百分比
- selectdeptno,
- ename,
- sal,
- sum(sal)over(partitionbydeptnoorderbysal,ename)cum_sal,
- round(100*ratio_to_report(sal)over(partitionbydeptno),1)pct_dept,
- round(100*ratio_to_report(sal)over(),1)pct_overall
- fromemp
- orderbydeptno,sal;
通用的程序ORACLE 9 以下数据库都可以用的
- selectemp.deptno,
- emp.ename,
- emp.sal,
- sum(emp4.sal)cum_sal,
- round(100*emp.sal/emp2.sal_by_dept,1)pct_dept,
- round(100*emp.sal/emp3.sal_overall,1)pct_overall
- fromemp,
- (selectdeptno,sum(sal)sal_by_deptfromempgroupbydeptno)emp2,
- (selectsum(sal)sal_overallfromemp)emp3,
- empemp4
- whereemp.deptno=emp2.deptno
- andemp.deptno=emp4.deptno
- and(emp.sal>emp4.salor
- (emp.sal=emp4.salandemp.ename>=emp4.ename))
- groupbyemp.deptno,
- emp.ename,
- emp.sal,
- round(100*emp.sal/emp2.sal_by_dept,1),
- round(100*emp.sal/emp3.sal_overall,1)
- orderbydeptno,sal;
但是使用 分析函数 数据执行速度比较块 而且随着数据增多 速度成数量级别递增
分享到:
相关推荐
主要介绍了Oracle查询中OVER (PARTITION BY ..)用法,内容和代码大家参考一下。
1、 结构:聚合函数()over( partition by 字段1,字段2,字段3 order by 字段 desc/asc range between 数值/date preceding/flowing and 数值/date preceding/flowing) 聚合函数可以是:sum,count,avg,max,min,...
ROW_NUMBER () OVER([partition_clause] order_by_clause) dense_rank在做排序时如果遇到列有重复值,则重复值所在行的序列值相同,而其后的序列值依旧递增,rank则是重复值所在行的序列值相同,但其后的序列值从...
Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数(转载),这个命令很实用,对于分析人员经常用到。
SELECT col, AVG(value) OVER(PARTITION BY col ORDER BY col) FROM tmp1 ORDER BY col; 2、SUM ( [ DISTINCT | ALL ] expr ) OVER ( analytic_clause ) 例如: --聚合函数 SELECT col, sum(value) FROM tmp1 ...
ORACLE数据库中PARTITION的用法[文].pdf
sum(sal) over (partition by deptno order by ename) 按部门“连续”求总和 sum(sal) over (partition by deptno) 按部门求总和 sum(sal) over (order by deptno,ename) 不按部门“连续”求总和 sum(sal) over () ...
本文主要介绍Oracle中rank,over partition函数的用法,希望对大家有所帮助。
rank ( ) over ([partition by col] order by col ) dense_rank ( ) over ([partition by col] order by col ) rownumber ( ) over ( [partition by col] order by col ) rank() 是排名的函数,该函数组内...
1.2、分析函数中的分组/排序/窗口 分析函数包含三个分析子句:分组(partition by), 排序(order by), 窗口(rows)
partition by关键字是分析性函数的一部分,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,本文给大家介绍SQLServer中Partition By及row_number 函数使用详解,需要的朋友参考下
第五篇 分析函数简述 ... Partition 子句:Partition by exp1[ ,exp2]... Partition没啥说的,功能强大参数少,主要用于分组,可以理解成select中的group by。不过它跟select语句后跟的group by 子句并不冲突。
SqlServer的over partition by开窗语句
1、CUME_DIST() OVER([partition_clause] order_by_clause) 返回该行在分组序列中的相对位置,返回值介于0到1之间。注意哟,如果order by的列是desc,则该分组内最大的行返回列值1,如果order by为asc,则该分组内...
Python partition函数的基本应用。partition函数主要用于拆分字符串。
本文主要是对Oracle分析函数概念的简单介绍,同时讲解了Over函数的用法,希望对大家学习分析函数有所帮助。
深入探讨oracle partition的机制与实现