- 浏览: 387329 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (314)
- java (132)
- 生活 (13)
- javase模式 (6)
- weblogic (4)
- jquery (5)
- sql (21)
- ecside (1)
- el (3)
- css (5)
- spring (7)
- ireport (2)
- linux (14)
- struts2 (2)
- jstl (1)
- rmi (1)
- rose (9)
- js (6)
- swing (4)
- webservice (1)
- jboss (1)
- ejb3 (2)
- xml (1)
- 线程 (9)
- socket (3)
- jms (2)
- tomcat (10)
- 领域驱动 (3)
- json (3)
- 权限 (2)
- jvm (1)
- 书籍 (1)
- eclipse RCP (0)
- 数据库设计 (10)
- 软件分析建模 (5)
- 分析建模 (3)
- hibernate jpa (5)
- Java 获取系统信息,包括CPU使用率、硬盘大小、网卡状态、系统信息等 (1)
- 项目管理 (2)
- 财务 (0)
- oracle (2)
- 需求 (2)
- rcp gef (0)
- c++ (1)
- hadoop (2)
- BIGDATA (3)
- c (6)
最新评论
-
lh_kevin:
...
jpa 注解 -
一别梦心:
你好,我也遇到此问题了。就你贴的那段代码,你说了两种解决方式, ...
Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法 -
fireinjava:
...
el表达式 -
宋建勇:
...
JSON: property "xxx" has no getter method in class "..." -
handawei:
有道理,jpa是orm框架的java标准,它关注的是对象到关系 ...
jpa 注解
排列(rank())函数。这些排列函数提供了定义一个集合(使用 PARTITION 子句),然后根据某种排序方式对这个集合内的元素进行排列的能力,下面以scott用户的emp表为例来说明rank over partition如何使用
1)查询员工薪水并连续求和
select deptno,ename,sal,
sum(sal)over(order by ename) sum1, /*表示连续求和*/
sum(sal)over() sum2, /*相当于求和sum(sal)*/
100* round(sal/sum(sal)over(),4) "bal%"
from emp
结果如下:
DEPTNO ENAME SAL SUM1 SUM2 bal%
---------- ---------- ---------- ---------- ---------- ----------
20 ADAMS 1100 1100 29025 3.79
30 ALLEN 1600 2700 29025 5.51
30 BLAKE 2850 5550 29025 9.82
10 CLARK 2450 8000 29025 8.44
20 FORD 3000 11000 29025 10.34
30 JAMES 950 11950 29025 3.27
20 JONES 2975 14925 29025 10.25
10 KING 5000 19925 29025 17.23
30 MARTIN 1250 21175 29025 4.31
10 MILLER 1300 22475 29025 4.48
20 SCOTT 3000 25475 29025 10.34
DEPTNO ENAME SAL SUM1 SUM2 bal%
---------- ---------- ---------- ---------- ---------- ----------
20 SMITH 800 26275 29025 2.76
30 TURNER 1500 27775 29025 5.17
30 WARD 1250 29025 29025 4.31
2)如下:
select deptno,ename,sal,
sum(sal)over(partition by deptno order by ename) sum1,/*表示按部门号分氏,按姓名排序并连续求和*/
sum(sal)over(partition by deptno) sum2,/*表示部门分区,求和*/
sum(sal)over(partition by deptno order by sal) sum3,/*按部门分区,按薪水排序并连续求和*/
100* round(sal/sum(sal)over(),4) "bal%"
from emp
结果如下:
DEPTNO ENAME SAL SUM1 SUM2 SUM3 bal%
---------- ---------- ---------- ---------- ---------- ---------- ----------
10 CLARK 2450 2450 8750 3750 8.44
10 KING 5000 7450 8750 8750 17.23
10 MILLER 1300 8750 8750 1300 4.48
20 ADAMS 1100 1100 10875 1900 3.79
20 FORD 3000 4100 10875 10875 10.34
20 JONES 2975 7075 10875 4875 10.25
20 SCOTT 3000 10075 10875 10875 10.34
20 SMITH 800 10875 10875 800 2.76
30 ALLEN 1600 1600 9400 6550 5.51
30 BLAKE 2850 4450 9400 9400 9.82
30 JAMES 950 5400 9400 950 3.27
DEPTNO ENAME SAL SUM1 SUM2 SUM3 bal%
---------- ---------- ---------- ---------- ---------- ---------- ----------
30 MARTIN 1250 6650 9400 3450 4.31
30 TURNER 1500 8150 9400 4950 5.17
30 WARD 1250 9400 9400 3450 4.31
3)如下:
select empno,deptno,sal,
sum(sal)over(partition by deptno) "deptSum",/*按部门分区,并求和*/
rank()over(partition by deptno order by sal desc nulls last) rank, /*按部门分区,按薪水排序并计算序号*/
dense_rank()over(partition by deptno order by sal desc nulls last) d_rank,
row_number()over(partition by deptno order by sal desc nulls last) row_rank
from emp
注:
rang()涵数主要用于排序,并给出序号
dense_rank():功能同rank()一样,区别在于,rank()对于排序并的数据给予相同序号,接下来的数据序号直接跳中跃,dense_rank()则不是,比如数据:1,2,2,4,5,6.。。。。这是rank()的形式
1,2,2,3,4,5,。。。。这是dense_rank()的形式
1,2,3,4,5,6.。。。。。这是row_number()涵数形式
row_number()涵数则是按照顺序依次使用,相当于我们普通查询里的rownum值
其实从上面三个例子当中,不难看出over(partition by ... order by ...)的整体概念,我理解是
partition by :按照指字的字段分区,如果没有则针对全体数据
order by :按照指定字段进行连续操作(如求和(sum),排序(rank()等),如果没有指定,就相当于对指定分区集合内的数据进行整体sum操作
发表评论
-
关于Union 中 ORA-12704:字符集不匹配问题的解决 .
2012-11-05 18:23 4460zhuan:http://blog.csdn.net/lqh4 ... -
oracle解锁
2012-06-19 17:04 800查看锁表进程SQL语句1: select sess.sid, ... -
Oracle集合操作函数:Union、Intersect、Minus
2012-02-17 16:19 1295集合操作不适用于LOB,Varray和潜逃表列 Unio ... -
Merge用法:Oracle 10g中对Merge语句的增强
2012-02-17 16:05 1104Merge用 ... -
数据库优化
2011-12-19 14:17 862转:http://www.iteye.com/topic/11 ... -
导入导出,创建databaselink
2011-08-10 15:56 2134pl/sql导出表结构和表 ... -
oracle改错
2011-02-09 12:19 1380系统运行了一段时间 ... -
dba常用sql
2010-12-16 17:19 11801. 查看表空间的名称及大小 select t.tablesp ... -
Oracle语句优化53个规则详解(转载)
2010-12-15 11:41 865Oracle语句优化53个规则 ... -
表修改
2010-11-17 23:12 844使用 字符串中使用’ Insert into product ... -
报表函数
2010-11-17 22:06 801报表函数: 总计: select 1 ,t.month ... -
窗口函数
2010-11-16 21:32 1029为计算一定的范围的累积和移动平均值,可以结合聚合函数使用:su ... -
orace评级函数
2010-11-15 22:35 1082cume_dist(): 功能描述:计算一行在组中的相对位置 ... -
orace评级函数
2010-11-14 23:43 922rank() over (order by XX): /* ... -
orcel sql 技巧
2010-11-14 23:05 1447转载:http://www.iteye.com/topic/8 ... -
oracle
2010-10-11 10:17 767今天没事来说说oracle性能优化的技巧。。 1.选用适合的 ... -
sql优化设定
2010-09-02 10:41 871select /*+RULE*/ m.daterunid ... -
ORACLE 中IN和EXISTS比较
2010-08-23 09:49 646EXISTS的执行流程 select * from ... -
group
2010-05-30 16:50 777select t.startstncode ,sum ... -
查询优化
2010-04-08 10:14 1105一、SQL语句优化:1: exists ...
相关推荐
使用炎症数据介绍非程序员的非程序员。本课程教导新手程序员编写模块化代码以执行分析Python的数据。然而,重点是教学 - 无可止知的原则,例如具有循环和功能封装的自动化,参见科学计算的最佳实践和科学计算中的...
A40-T3的sys_partition.fex分区表说明 A40-T3的sys_partition.fex分区表是全志A40i T3芯片的分区表配置文件,用于在V40项目中实现系统的分区管理。该文件中包含了系统的各个分区的配置信息,包括bootloader分区、...
如果不是,则调用`pation`函数进行分区,并得到基准元素的最终位置`q`,然后递归地对`A[x]`到`A[q-1]`和`A[q+1]`到`A[y]`两段子数组进行快速排序。 3. **分区操作实现**: `pation`函数用于执行分区操作。它接受一...
在本例中,通过`quick_sort`函数实现了快速排序算法,其中`pation`函数负责分区操作。 - 分区函数`pation`: - 输入参数:数组`a`、起始索引`x`、终止索引`y`。 - 功能:选择一个基准值,将数组分为两部分,左边...
# be pation, it can take a time 登录你 $ vagrant ssh 并安装所有silexphp依赖项 $ docker exec opt_silexphp_1 /opt/devtools/composer.phar install 后记在/opt/silexphp/.docker/app/public文件夹中创建index...
在提供的压缩包文件"EPW-Pation"中,很可能包含了这个Win调整分区工具的安装程序或执行文件。在使用之前,确保你的系统符合软件的系统要求,并且关闭所有可能阻止硬盘访问的程序,如防病毒软件。解压文件后,按照...