Oracle-分析函数ROW_NUMBER() OVER()

1.row_number() over()
功能一:排序(无分组)
row_number()over(order by column) 排序,列出序号
over()里头的分组以及排序的执行晚于 where group by order by 的执行
例如:
Select t.id,row_number()over(order by t.id ) from DUP_MQD_YLFL t

功能二:分组排序
row_number()over(partition by column order by column)
partition by 后面的column是需要分组字段
例如
Select t.id,t.name1,row_number() over(partition by t.name1 order by t.id) from DUP_MQD_YLFL t
2.rank() over ()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)
例如:
select t.group_id,t.dir_code,rank()over(partition by t.dir_code order by t.create_time) from HEC_DUP_COM_PUB_RESULT t

3.dense_rank() over()是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的

select t.group_id,t.dir_code,dense_rank()over(partition by t.dir_code order by t.create_time) from HEC_DUP_COM_PUB_RESULT t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROW_NUMBER() OVER是Oracle数据库中的一种窗口函数,用于为查询结果集中的每一行分配一个唯一的序号。它常用于需要对查询结果进行排序或分组,并且需要为每一行分配一个序号的场景。 使用ROW_NUMBER() OVER的基本语法如下: ``` SELECT column1, column2, ..., ROW_NUMBER() OVER ([PARTITION BY partition_expression] ORDER BY order_expression) AS row_number FROM table_name ``` 其中,`partition_expression`是可选项,用于指定分区条件,如果指定了分区条件,则序号将在每个分区内进行计算。`order_expression`是必选项,用于指定排序条件,即按照哪个列或表达式对结果进行排序。 下面是一个例子,展示如何使用ROW_NUMBER() OVER函数: 假设有一个名为employees的表,包含员工信息: ``` +----+-------+--------+ | ID | Name | Salary | +----+-------+--------+ | 1 | John | 5000 | | 2 | Alice | 6000 | | 3 | Bob | 4000 | | 4 | Mary | 5500 | +----+-------+--------+ ``` 我们可以使用ROW_NUMBER() OVER对员工表按照薪水进行排序,并为每一行分配一个序号: ``` SELECT ID, Name, Salary, ROW_NUMBER() OVER (ORDER BY Salary DESC) AS row_number FROM employees; ``` 执行以上查询,将得到以下结果: ``` +----+-------+--------+------------+ | ID | Name | Salary | row_number | +----+-------+--------+------------+ | 2 | Alice | 6000 | 1 | | 4 | Mary | 5500 | 2 | | 1 | John | 5000 | 3 | | 3 | Bob | 4000 | 4 | +----+-------+--------+------------+ ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值