加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle的开窗函数

发布时间:2021-01-25 15:18:19 所属栏目:站长百科 来源:网络整理
导读:开窗函数指的是OVER(),和说明函数共同行使。 语法: OVER (PARTITION BY 分组字段 ORDER BY 排序字段 ROWS BETWEEN 排序字段范畴值1 AND 排序字段范畴值2) 语法声名:开窗函数为说明函数带有的,包括三个说明子句: 1. 分组(PARTITION BY)。 2. 排序(ORD

开窗函数指的是OVER(),和说明函数共同行使。

语法:

OVER(PARTITION BY 分组字段 ORDER BY 排序字段 ROWS BETWEEN 排序字段范畴值1 AND 排序字段范畴值2)

语法声名:开窗函数为说明函数带有的,包括三个说明子句:
1. 分组(PARTITION BY)。
2. 排序(ORDER BY)。
3. 窗口(ROWS)-- 指定范畴。

ROWS 有多个范畴值:
1. UNBOUNDED PRECEDING 无穷/不限制 先前行。
2. N PRECEDING N个先前行(N为1则是1个先前行,2则是2个先前行,以此类推)。
3. UNBOUNDED FOLLOWING 无穷/不限制 的跟从行。
4. N FOLLOWING N个跟从行(N为1则是1个跟从行,2则是2个跟从行,以此类推)。
5. CURRENT ROW 当前行。

示例1:

SELECT
  CCTI.CTR_TYPE_ID,CCTI.ORDER_NUM,CCTI.NAME,WMSYS.WM_CONCAT(CCTI.NAME) OVER
  (PARTITION BY CCTI.CTR_TYPE_ID) CTR_TYPE_ITEM_STR
FROM T_CTRG_CTR_TYPE_ITEM CCTI;

功效1:

oracle的开窗函数

说明1:

区别于GROUP BY子句的只返回分组行的功效,开窗函数每一行城市返回一个功效。

示例1的写法相等于指定了ROWS范畴从不限制先前行到不限制跟从行(默认):

SELECT
  CCTI.CTR_TYPE_ID,WMSYS.WM_CONCAT(CCTI.NAME) OVER
  (PARTITION BY CCTI.CTR_TYPE_ID ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) CTR_TYPE_ITEM_STR
FROM T_CTRG_CTR_TYPE_ITEM CCTI;

示例2:

SELECT
  CCTI.CTR_TYPE_ID,WMSYS.WM_CONCAT(CCTI.NAME) OVER
  (PARTITION BY CCTI.CTR_TYPE_ID ORDER BY CCTI.ORDER_NUM) CTR_TYPE_ITEM_STR
FROM T_CTRG_CTR_TYPE_ITEM CCTI;

功效2:

oracle的开窗函数

说明2:

加上了ORDER BY 之后,返回功效酿成了逐级递增的结果。

写法相等于指定了ROWS范畴从不限制先前行到当前行(加了ORDER BY默认):

SELECT
  CCTI.CTR_TYPE_ID,WMSYS.WM_CONCAT(CCTI.NAME) OVER
  (PARTITION BY CCTI.CTR_TYPE_ID ORDER BY CCTI.ORDER_NUM ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) CTR_TYPE_ITEM_STR
FROM T_CTRG_CTR_TYPE_ITEM CCTI;

出格声名:假如SQL语句中存在ORDER BY语句(非开窗函数中的说明子句),会再说明函数说明竣事后再执行排序,优先级低于说明子句。

后话:

由于开窗函数每一行城市返回一个功效,以是要取分组功效的话,可以在语句加上DISTINCT修饰即可返回分组功效(分组功效内有排序)。

语句:

SELECT DISTINCT
  CCTI.CTR_TYPE_ID,WMSYS.WM_CONCAT(CCTI.NAME) OVER
  (PARTITION BY CCTI.CTR_TYPE_ID ORDER BY CCTI.ORDER_NUM ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) CTR_TYPE_ITEM_STR
FROM T_CTRG_CTR_TYPE_ITEM CCTI;

功效:

oracle的开窗函数

?

"人生中最让人疾苦的,不在于【得不到】,而在于【我原来可以】。"

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读