`

oracle (Rank,Lag,Aggregate_function,First/Last)

 
阅读更多

功能测试用表: 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()OverPartiton by … Order By …Nulls First/Last

Dense_rank ()OverPartiton by … Order By …Nulls First/Last

Row_number ()OverPartiton 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值

 

 

 

 

二、LagOverPartiton by … Order By …Nulls First/Last

LeadOverPartiton 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_functionMIN, MAX, SUM, AVG, COUNT, VARIANCE, STDDEV.

Aggregate_functionOverPartition 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) KeepDense_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-->

分享到:
评论

相关推荐

    合成控制代码与数据(合成控制法代码加注释与演练数据).rar

    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 ...

    Oracle_function.zip_oracle

    4. **窗口函数**:在Oracle 10g及以后版本引入,如`RANK()`、`LEAD()`、`LAG()`等,允许在结果集的行之间进行计算,常用于数据分析和报表。 5. **游标函数**:游标是处理单行记录的指针,游标函数允许在存储过程和...

    一阶滞后滤波算法.zip_canalu2l_first order fitlter_lag filter_一阶滞后滤波算法_数据

    一阶滞后滤波算法,用于统计数据时的平均、平滑.

    SQL_Function.rar_Function Sql_function s_sql functi_sql function

    这个名为"SQL_Function.rar"的压缩包显然包含了一组关于SQL函数的资源,适合正在学习和使用SQL的人员。让我们深入探讨一些常见的SQL函数。 1. **聚合函数**: - `COUNT(*)`:返回表中的行数。 - `SUM(column_name...

    ORACLE_培训之_分析函数

    - **first_value()** 和 **last_value()**: 分别返回当前行所在组的第一行和最后一行的值。 - **rank()**, **dense_rank()** 和 **row_number()**: 用于排序,分别返回唯一的排名、无间隙的排名和行号。 - **lag()**...

    matlab.rar_compensator_lag compensator_滞后_滞后补偿

    在控制系统设计中,滞后补偿是优化系统性能的关键技术之一。滞后补偿器的目的是改善系统响应,特别是对于具有显著滞后特性的系统。滞后通常由热力学过程、机械传动或信号传递延迟引起,它会导致系统的响应变得迟缓且...

    oracle分析函数over_及开窗函数.txt

    本文将详细介绍Oracle中的`OVER`子句以及几种常用的开窗函数,包括`ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`和`LAG()`等。 #### 二、基本概念 - **`OVER`子句**:`OVER`子句用于指定分析函数的作用范围,它可以...

    K9LAG08U0M_0.7.rar_FlashMX/Flex源码_Unix_Linux_

    标题中的“K9LAG08U0M_0.7.rar”可能是一个特定版本的固件或软件更新的标识,而“FlashMX/Flex源码”指的是Adobe Flash MX或Flex的相关编程源代码,这些工具主要用于创建富互联网应用程序(RIA)。在描述中提到的...

    Oracle分析函数基本概念和语法总结及Regexp_***用法

    Oracle分析函数是数据库管理系统Oracle中的一种高级查询工具,它们用于处理行集,计算基于特定窗口内的数据的聚合值。分析函数的主要特点是返回的结果不仅仅是一行,而是多行,这与传统的聚合函数(如SUM, AVG等)...

    Oracle分析函数参考手册

    除了AVG和CORR,Oracle还提供了其他分析函数,如LEAD/LAG(获取当前行的前/后一行数据)、RANK/DENSE_RANK/ROW_NUMBER(为每一行分配唯一的排名)、PERCENT_RANK/CUME_DIST(计算百分位或累积分布)、MIN/MAX(按...

    Oracle_详解分析函数

    3. **First/Last排名查询**:使用`FIRST_VALUE`或`LAST_VALUE`函数获取第一行或最后一行的值。 4. **按层次查询**:通过嵌套等级函数来实现多层次的排名和分组。 #### 五、窗口函数详解 窗口函数能够对数据集的...

    Oracle分析函数

    ### Oracle分析函数详解 #### 一、概述 Oracle分析函数是一种强大的工具,它允许用户对查询结果进行复杂的分析处理,而无需多次查询数据库或编写复杂的程序逻辑。这大大简化了开发人员的工作,尤其是在处理大数据...

    ruanjiansheji.rar_pid整定_time lag pid_传递函数时变_滞后过程_精馏

    以中等纯度的精馏塔为研究对象,考虑到不等分子溢流的影响和非理想的汽液平衡,可以得到塔顶产品轻组分含量Y与回流量L之间的传递函数为: 控制要求: 1.采用积分分离 PID控制算法将塔顶轻组分含量Y控制在0.99 ...

    Oracle-SQL.zip_oracle_practice

    Oracle SQL还提供了窗口函数(Window Function),比如RANK、ROW_NUMBER、LEAD和LAG等,这些函数在处理时间序列数据或者需要基于行的计算时非常有用。窗口函数允许我们在数据集上定义一个“窗口”,并在该窗口内进行...

    oracle分析函数

    Dense_Rank, Row_Number)、分组函数(如Percent_Rank, Cume_Dist)、移动平均函数(Moving_Average)、累积和/积函数(Cumulative_Sum, Cumulative_Product)以及一些特定的函数如Lead, Lag, First_Value, Last_...

    oracle row_number用法

    ### Oracle Row_Number 函数详解 #### 一、Row_Number 基础概念 在Oracle数据库中,`ROW_NUMBER()`函数是一种窗口函数,主要用于为查询结果中的每一行分配一个唯一的序列号。这一特性使得它在处理分组数据时非常...

    NO_LAG_BIKINAN_antilag_

    标题“NO_LAG_BIKINAN_antilag_”似乎是指一个针对游戏性能优化的工具或设置,旨在减少延迟(lag)并提供更流畅的游戏体验。"Biar palalu ga puyeng liat skill" 这句印尼语可以翻译为 "这样观看技能展示时就不会...

    oracle的分析函数汇总

    使用 Rank 函数对数据进行排名,使用 Lag 和 Lead 函数对数据进行延迟和前导操作,使用 Sum 和 Avg 函数对数据进行汇总和平均计算,使用 Ratio_to_Report 函数对数据进行报表处理,使用 First 和 Last 函数对数据...

    oracle分析函数学习

    Oracle分析函数是数据库查询中的重要工具,特别是在处理复杂的报表和数据分析任务时,它们能提供强大的功能,帮助开发者高效地处理大量数据。分析函数允许你在数据集上执行计算,同时考虑到行之间的关系,而不仅仅是...

    lyaprosen.rar_The First_exp

    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 ...

Global site tag (gtag.js) - Google Analytics