Oracle存储过程二 分组排序后取第一条和最后一条 first_value和last_value 不使用嵌套sql

本文介绍了如何在Oracle中利用first_value和last_value函数,结合partition by进行分组,以求解每个月账单花费最多和最少的日期,无需嵌套SQL查询。详细讲解了函数定义、建表步骤及分析函数的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      每天都记账,想要知道每个月账单 哪一天花费的钱最多?这个功能是根据时间排序求花费最大的时间。要实现这个功能需要用到first_value() over(partition by )和last_value() over(partition by )

A.函数定义

      first_value() 函数是指获取序列的第一条记录。last_value()获取的是序列的最后一条记录。

      函数定义如下:

           first_value {(expr [{RESPECT|IGNORE} NULLS]} over (analytic_clause)

     其中 :expr 可以是表达式,也可以是单个字段

                 analytic_clause是指: partition by 分组字段

        last_value {(expr [{RESPECT|IGNORE} NULLS]} over (analytic_clause)

        其中: expr 可以是表达式,也可以是单个字段

                 analytic_clause是指: partition by 分组字段 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING

B. 步骤一 建表

     一个2020年每天时间的表,有四个字段,分别是年,月,日,和每天对应的Number_s随机数。要求每个月number_s值最大是哪一天?怎么求呢?


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值