SQL FIRST_VALUE() 获取分组排序后的最前条记录

有如下几种函数用法,

first_value, last_value, Nth_value
Partition By 是指按照什么项目分组,
ORDER BY 这个不用解释了。
IGNORE NULLS 忽视结果为Null的行。

グループ単位に、ソートしたレコードの先頭行の値を取得するには、FIRST_VALUE関数を使用する

分析関数のFIRST_VALUEは、ウィンドウ(window)を操作してレコードの先頭行の値を取得します。

FIRST_VALUE( 項目 [ IGNORE NULLS ] ) 引数で指定した項目値を、ソートしたレコードの先頭行から取得する。

IGNORE NULLSを指定すると、最初のNULLでない行の値が返されます。

OVER( [ PRTITION BY 項目1,
             [項目2,・・] ]
     ORDER BY 項目1,
             [項目2,・・] )
FIRST_VALUE関数と一緒に使用します
PRTITION BY句には、グループ化対象項目を指定する
ORDERY BY句には、ソート対象の項目を指定する

サンプル表「emp01」データ
SQL> select * from emp01;

EMP_ID DEPT_ID EMP_NAME  YEARS     SALARY
----- -----  ---------- ---------- ----------
E01   D01    なまえ1    3        150
E02   D02    なまえ2    7        200
E03   D03    なまえ3    7        300
E04   D02    なまえ4    7        400
E05   D03    なまえ5    3        500
E06   D02    なまえ6    3        600

例1) 列「dept_id」別に、列「salary」を降順でソートしたレコードの先頭行から、「salary」の値をそれぞれ取得します。
SQL> select
  2  emp_id, dept_id, salary,
  3  first_value( salary )
  4  over( partition by dept_id order by salary desc ) as first_salary
  5 from emp01;

EMP_ID DEPT_ID SALARY FIRST_SALARY
-----  -----   ------- ----------
E01    D01    150     150
E06    D02    600     600
E04    D02    400     600
E02    D02    200     600
E05    D03    500     500
E03    D03    300     500

http://oracle.se-free.com/dml/0601_first_value.html

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值