功能测试用表: v_test(id int,group_id varchar2(10),name varchar2(10),num int)
ID |
GROUP_ID |
NAME |
NUM |
1 |
001 |
ok |
13 |
2 |
001 |
yes |
25 |
3 |
001 |
no |
25 |
4 |
001 |
hi |
25 |
5 |
001 |
no |
17 |
6 |
001 |
no |
34 |
7 |
002 |
no |
26 |
8 |
002 |
oh |
19 |
一、Rank()Over(Partiton by … Order By …Nulls First/Last)
Dense_rank ()Over(Partiton by … Order By …Nulls First/Last)
Row_number ()Over(Partiton by … Order By …Nulls First/Last)
SQL语句:
-------------------------------------------------------------------------------------------------------
select id,group_id,name,num,
rank()over(partition by group_id order by name asc nulls last) rk,
dense_rank()over(partition by group_id order by name asc nulls first) dr,
row_number()over(partition by group_id order by name asc nulls last) rn
from v_test;
-------------------------------------------------------------------------------------------------------
结果:
ID |
GROUP_ID |
NAME |
NUM |
RK |
DR |
RN |
4 |
001 |
hi |
25 |
1 |
1 |
1 |
3 |
001 |
no |
25 |
2 |
2 |
2 |
5 |
001 |
no |
17 |
2 |
2 |
3 |
6 |
001 |
no |
34 |
2 |
2 |
4 |
1 |
001 |
ok |
13 |
5 |
3 |
5 |
2 |
001 |
yes |
25 |
6 |
4 |
6 |
7 |
002 |
no |
26 |
1 |
1 |
1 |
8 |
002 |
oh |
19 |
2 |
2 |
2 |
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值
二、Lag(…,…)Over(Partiton by … Order By …Nulls First/Last)
Lead(…,…)Over(Partiton by … Order By …Nulls First/Last)
SQL语句:
-------------------------------------------------------------------------------------------------------
select id,group_id,name,num,
lag(name,1)over(partition by group_id order by name asc nulls last) lg,
lead(name,1)over(partition by group_id order by name asc nulls first) ld
from v_test;
-------------------------------------------------------------------------------------------------------
结果:
ID |
GROUP_ID |
NAME |
NUM |
LG |
LD |
4 |
001 |
hi |
25 |
|
no |
3 |
001 |
no |
25 |
hi |
no |
5 |
001 |
no |
17 |
no |
no |
6 |
001 |
no |
34 |
no |
ok |
1 |
001 |
ok |
13 |
no |
yes |
2 |
001 |
yes |
25 |
ok |
|
7 |
002 |
no |
26 |
|
oh |
8 |
002 |
oh |
19 |
no |
|
三、Aggregate_function:MIN, MAX, SUM, AVG, COUNT, VARIANCE, STDDEV.
Aggregate_function(…)Over(Partition by … Order By …Nulls First/Last)
SQL语句:
-------------------------------------------------------------------------------------------------------
select id,group_id,name,num,
min(num)over(partition by group_id order by id asc Nulls First ) mn,
max(num)over(partition by group_id order by id asc Nulls First) mx,
avg(num)over(partition by group_id order by id asc Nulls First) ag,
sum(num)over(partition by group_id order by id asc Nulls First) sm
from v_test;
-------------------------------------------------------------------------------------------------------
结果:
ID |
GROUP_ID |
NAME |
NUM |
MN |
MX |
AG |
SM |
1 |
001 |
ok |
13 |
13 |
13 |
13 |
13 |
2 |
001 |
yes |
25 |
13 |
25 |
19 |
38 |
3 |
001 |
no |
25 |
13 |
25 |
21 |
63 |
4 |
001 |
hi |
25 |
13 |
25 |
22 |
88 |
5 |
001 |
no |
17 |
13 |
25 |
21 |
105 |
6 |
001 |
no |
34 |
13 |
34 |
23.1666666666667 |
139 |
7 |
002 |
no |
26 |
26 |
26 |
26 |
26 |
8 |
002 |
oh |
19 |
19 |
26 |
22.5 |
45 |
四、First/Last
Aggregate_function(…) Keep(Dense_rank First/Last Order By …Nulls First/Last)
Over (Partition by …)
说明:DENSE_RANK FIRST or DENSE_RANK LAST indicates that Oracle will aggregate over only those rows with the minimum (FIRST) or the maximum (LAST) dense rank ("olympic rank").
SQL语句:
-------------------------------------------------------------------------------------------------------
select id,group_id,name,num,
min(num)keep(dense_rank first order by id)over(partition by group_id ) mnf,
max(num)keep(dense_rank last order by id)over(partition by group_id ) mxl
from v_test;
-------------------------------------------------------------------------------------------------------
结果:
ID |
GROUP_ID |
NAME |
NUM |
MNF |
MXL |
1 |
001 |
ok |
13 |
13 |
34 |
2 |
001 |
yes |
25 |
13 |
34 |
3 |
001 |
no |
25 |
13 |
34 |
4 |
001 |
hi |
25 |
13 |
34 |
5 |
001 |
no |
17 |
13 |
34 |
6 |
001 |
no |
34 |
13 |
34 |
7 |
002 |
no |
26 |
26 |
19 |
8 |
002 |
oh |
19 |
26 |
19 |
注释:指定First(Last)是指在数据排序后,取排序结果中第一条(最后一条)记录。但是由于指定排序的栏位值可能相等,并导致排序后的序号相同,所以还需要使用聚合函数确定到底取用哪一条记录作为结果集返回。
-------------------------------------------------------------------------------------------------------
select id,group_id,name,num,
min(num)keep(dense_rank first order by name)over(partition by group_id ) mnf,
max(num)keep(dense_rank last order by name)over(partition by group_id ) mxl
from v_test where name='no';
-------------------------------------------------------------------------------------------------------
结果:
ID |
GROUP_ID |
NAME |
NUM |
MNF |
MXL |
3 |
001 |
no |
25 |
17 |
34 |
5 |
001 |
no |
17 |
17 |
34 |
6 |
001 |
no |
34 |
17 |
34 |
7 |
002 |
no |
26 |
26 |
26 |
<!--EndFragment-->
发表评论
-
Oracle关于时间/日期的操作
2012-04-09 23:12 8251.日期时间间隔操作 当前时间减去7分钟的时间 s ... -
oracle 数据库增量备份
2012-03-16 20:03 1111EXP和IMP是Oracle提供的一种逻辑备份工具。逻辑备份创 ... -
oracle start with connect by 用法
2012-02-19 23:58 983oracle 提供了start with connect by ... -
Oracle数据导入导出imp/exp
2012-02-09 17:38 584Oracle数据导入导出imp/exp 功能:Oracle数 ... -
性能监控SQL语句
2011-12-23 13:51 793分析表 analyze table tablename co ... -
常用SQL语句
2011-12-23 13:50 944查找数据库中所有字段 以对应的表 select C.colu ... -
安装到最后的两个脚本作用
2011-12-06 18:32 1008在linux下安装Oralce的时候,最后会让你以root的身 ... -
ORACLE中一个字符占多少字节
2011-12-01 22:07 3822在oracle中一个字符特别是中文占几个字节是不同的。 比如 ... -
提高SQL效率
2011-12-01 00:13 990下面就某些SQL 语句的 where 子句编写中需要注意 ... -
“exists”和“in”的效率问题
2011-11-30 23:49 980有两个简单例子,以说明 “exists”和“in”的效率问题 ... -
Oracle建立全文索引详解
2011-11-30 20:42 14441.全文检索和普通检索的区别 不使用Oracle text功 ... -
全文检索CLOB
2011-11-30 12:00 957建议使用全文检索(FULL TEXT SEARCH) ... -
“Oracle”数据库的“周数计算”
2011-11-16 13:25 943——日期计算,算第n周的第一天及最后一天是几号。 by key ... -
Oracle中TO_DATE格式
2011-11-16 13:17 799TO_DATE格式(以时间:2007-11-02 13:4 ... -
Oracle 索引 详解
2011-11-15 13:00 25993Oracle 索引 详解 ... -
Oracle SQL中的IN 和 EXSITS区别总结
2011-11-15 11:06 975IN 确定给定的值是否与子查询或列表中的值相匹配。 EX ... -
Oracle 字符集的查看和修改
2011-11-14 23:09 901一、什么是Oracle字符集 ... -
Oracle Flashback技术总结
2011-11-14 01:06 931Flashback 技术是以Undo segment中的内容为 ... -
oracle日志归档模式改变
2011-11-14 00:15 1062在Oracle数据库中,主要 ... -
如何最大程度的 把表空间里面的数据给抢救出来
2011-11-03 16:18 1221今天一朋友问到一个比较有意识的问题: 如果一个表空间,其中一个 ...
相关推荐
一阶滞后滤波算法,用于统计数据时的平均、平滑.
已知指定参数值,用matlab编程实现一个滞后补偿器。已满足题目参数要求。
三星最新Flash内部资料,网上找不到的: K9XXG08UXM
以中等纯度的精馏塔为研究对象,考虑到不等分子溢流的影响和非理想的汽液平衡,可以得到塔顶产品轻组分含量Y与回流量L之间的传递函数为: 控制要求: 1.采用积分分离 PID控制算法将塔顶轻组分含量Y控制在0.99 ...
Oracle分析函数——函数列表 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算一个组和数据窗口内表达式的...
lag before of first decline of autocorrelation value below exp(-1)=0.367879441.For data with nonlinear dependency autocorrelation function is not proper and mutual information criteria will be ...
Oracle 分析函数详解 1. 自动汇总函数rollup,cube, 2. rank 函数, rank,dense_rank,row_number 3. lag,lead函数 4. sum,avg,的移动增加,移动平均数 5. ratio_to_report报表处理函数 6. first,last取基数的分析函数
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。 代码如下:CREATE TABLE salaryByMonth( employeeNo varchar2(20)...
biar palalu ga puyeng liat skill
Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法,需要的朋友可以参考下。
Simulation and experimental results are presented to verify the performance of the complete system
原创的matlab小程序,用于计算超前滞后相关,自带检验线,月资料和年资料都可以。
全数字超前—滞后门符号同步算法的FPGA实现的verilog源代码
1、oracle分析函数 中文: 主要含: rank() 和 dense_rank() first_value()和last_value() row_number() LAG() range开窗函数 2、oracle分析函数 英文: 比较详细
Covid-19传播预测 全自动代码,可在未来几天(默认为7天)为每个国家和每个俄罗斯地区的“确认”和“死亡”病例创建Covid-19预测。...python prepare_features_countries/r5_get_first_case_date_countries.p
从论坛搜到的,感觉还不错,整理成了word文档,希望对大家也有用,同时也感谢原作者。 主要讲了以下函数: 1. 自动汇总函数rollup,cube, 2. rank 函数, rank,dense_rank,row_number ...6. first,last取基数的分析函数
op.o g729/cor_func.o g729/dec_lag3.o g729/filter.o g729/gainpred.o g729/lspdec.o g729/pitch_a.o g729/p_parity.o g729/qua_gain.o g729/tab_ld8a.o g729/bits.o g729/de_acelp.o g729/dec_ld8a.o g729/g729a_...
MA Lag 消减指标是一个能够设置延迟消除因子的 SMA。
1,数值型函数(abs()、sign()、ceil()、floor()、power()、exp()、round()...);...6,分析函数(sum(...) over(...)、dense_rank、row_number()、lag()...); 7,其它函数(decode()、nvl()、nvl2()、least()...);