功能测试用表: 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 8561.日期时间间隔操作 当前时间减去7分钟的时间 s ... -
oracle 数据库增量备份
2012-03-16 20:03 1166EXP和IMP是Oracle提供的一种逻辑备份工具。逻辑备份创 ... -
oracle start with connect by 用法
2012-02-19 23:58 1037oracle 提供了start with connect by ... -
Oracle数据导入导出imp/exp
2012-02-09 17:38 628Oracle数据导入导出imp/exp 功能:Oracle数 ... -
性能监控SQL语句
2011-12-23 13:51 834分析表 analyze table tablename co ... -
常用SQL语句
2011-12-23 13:50 987查找数据库中所有字段 以对应的表 select C.colu ... -
安装到最后的两个脚本作用
2011-12-06 18:32 1053在linux下安装Oralce的时候,最后会让你以root的身 ... -
ORACLE中一个字符占多少字节
2011-12-01 22:07 3875在oracle中一个字符特别是中文占几个字节是不同的。 比如 ... -
提高SQL效率
2011-12-01 00:13 1033下面就某些SQL 语句的 where 子句编写中需要注意 ... -
“exists”和“in”的效率问题
2011-11-30 23:49 1026有两个简单例子,以说明 “exists”和“in”的效率问题 ... -
Oracle建立全文索引详解
2011-11-30 20:42 14781.全文检索和普通检索的区别 不使用Oracle text功 ... -
全文检索CLOB
2011-11-30 12:00 1002建议使用全文检索(FULL TEXT SEARCH) ... -
“Oracle”数据库的“周数计算”
2011-11-16 13:25 998——日期计算,算第n周的第一天及最后一天是几号。 by key ... -
Oracle中TO_DATE格式
2011-11-16 13:17 839TO_DATE格式(以时间:2007-11-02 13:4 ... -
Oracle 索引 详解
2011-11-15 13:00 26058Oracle 索引 详解 ... -
Oracle SQL中的IN 和 EXSITS区别总结
2011-11-15 11:06 1018IN 确定给定的值是否与子查询或列表中的值相匹配。 EX ... -
Oracle 字符集的查看和修改
2011-11-14 23:09 953一、什么是Oracle字符集 ... -
Oracle Flashback技术总结
2011-11-14 01:06 968Flashback 技术是以Undo segment中的内容为 ... -
oracle日志归档模式改变
2011-11-14 00:15 1116在Oracle数据库中,主要 ... -
如何最大程度的 把表空间里面的数据给抢救出来
2011-11-03 16:18 1276今天一朋友问到一个比较有意识的问题: 如果一个表空间,其中一个 ...
相关推荐
gen growtreated=(_Y_treated-lag_Y_treated)/abs(lag_Y_treated) gen lag_Y_synthetic=_Y_synthetic[_n-1] gen growsynthetic=(_Y_synthetic-lag_Y_synthetic)/abs(lag_Y_synthetic) twoway line growtreated ...
4. **窗口函数**:在Oracle 10g及以后版本引入,如`RANK()`、`LEAD()`、`LAG()`等,允许在结果集的行之间进行计算,常用于数据分析和报表。 5. **游标函数**:游标是处理单行记录的指针,游标函数允许在存储过程和...
一阶滞后滤波算法,用于统计数据时的平均、平滑.
这个名为"SQL_Function.rar"的压缩包显然包含了一组关于SQL函数的资源,适合正在学习和使用SQL的人员。让我们深入探讨一些常见的SQL函数。 1. **聚合函数**: - `COUNT(*)`:返回表中的行数。 - `SUM(column_name...
- **first_value()** 和 **last_value()**: 分别返回当前行所在组的第一行和最后一行的值。 - **rank()**, **dense_rank()** 和 **row_number()**: 用于排序,分别返回唯一的排名、无间隙的排名和行号。 - **lag()**...
在控制系统设计中,滞后补偿是优化系统性能的关键技术之一。滞后补偿器的目的是改善系统响应,特别是对于具有显著滞后特性的系统。滞后通常由热力学过程、机械传动或信号传递延迟引起,它会导致系统的响应变得迟缓且...
本文将详细介绍Oracle中的`OVER`子句以及几种常用的开窗函数,包括`ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`和`LAG()`等。 #### 二、基本概念 - **`OVER`子句**:`OVER`子句用于指定分析函数的作用范围,它可以...
标题中的“K9LAG08U0M_0.7.rar”可能是一个特定版本的固件或软件更新的标识,而“FlashMX/Flex源码”指的是Adobe Flash MX或Flex的相关编程源代码,这些工具主要用于创建富互联网应用程序(RIA)。在描述中提到的...
Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,它们用于处理行集,计算基于特定窗口内的数据的聚合值。分析函数的主要特点是返回的结果不仅仅是一行,而是多行,这与传统的聚合函数(如SUM, AVG等)...
除了AVG和CORR,Oracle还提供了其他分析函数,如LEAD/LAG(获取当前行的前/后一行数据)、RANK/DENSE_RANK/ROW_NUMBER(为每一行分配唯一的排名)、PERCENT_RANK/CUME_DIST(计算百分位或累积分布)、MIN/MAX(按...
3. **First/Last排名查询**:使用`FIRST_VALUE`或`LAST_VALUE`函数获取第一行或最后一行的值。 4. **按层次查询**:通过嵌套等级函数来实现多层次的排名和分组。 #### 五、窗口函数详解 窗口函数能够对数据集的...
### Oracle分析函数详解 #### 一、概述 Oracle分析函数是一种强大的工具,它允许用户对查询结果进行复杂的分析处理,而无需多次查询数据库或编写复杂的程序逻辑。这大大简化了开发人员的工作,尤其是在处理大数据...
以中等纯度的精馏塔为研究对象,考虑到不等分子溢流的影响和非理想的汽液平衡,可以得到塔顶产品轻组分含量Y与回流量L之间的传递函数为: 控制要求: 1.采用积分分离 PID控制算法将塔顶轻组分含量Y控制在0.99 ...
Oracle SQL还提供了窗口函数(Window Function),比如RANK、ROW_NUMBER、LEAD和LAG等,这些函数在处理时间序列数据或者需要基于行的计算时非常有用。窗口函数允许我们在数据集上定义一个“窗口”,并在该窗口内进行...
Dense_Rank, Row_Number)、分组函数(如Percent_Rank, Cume_Dist)、移动平均函数(Moving_Average)、累积和/积函数(Cumulative_Sum, Cumulative_Product)以及一些特定的函数如Lead, Lag, First_Value, Last_...
### Oracle Row_Number 函数详解 #### 一、Row_Number 基础概念 在Oracle数据库中,`ROW_NUMBER()`函数是一种窗口函数,主要用于为查询结果中的每一行分配一个唯一的序列号。这一特性使得它在处理分组数据时非常...
标题“NO_LAG_BIKINAN_antilag_”似乎是指一个针对游戏性能优化的工具或设置,旨在减少延迟(lag)并提供更流畅的游戏体验。"Biar palalu ga puyeng liat skill" 这句印尼语可以翻译为 "这样观看技能展示时就不会...
使用 Rank 函数对数据进行排名,使用 Lag 和 Lead 函数对数据进行延迟和前导操作,使用 Sum 和 Avg 函数对数据进行汇总和平均计算,使用 Ratio_to_Report 函数对数据进行报表处理,使用 First 和 Last 函数对数据...
Oracle分析函数是数据库查询中的重要工具,特别是在处理复杂的报表和数据分析任务时,它们能提供强大的功能,帮助开发者高效地处理大量数据。分析函数允许你在数据集上执行计算,同时考虑到行之间的关系,而不仅仅是...
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 ...