ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB ROW_NUMBER函数

YashanDB ROW_NUMBER函数

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-07-28 18:41:13 0 删除 编辑

ROW_NUMBER

语法图

ROW_NUMBER为 窗口函数,其语法描述及约束与 DENSE_RANK函数、 RANK函数一致,区别在于排序时对并列值的处理:

  • 本函数不列出并列值,而是根据返回的结果递增,不跳号,例如1,2,3,4,5,6,7,8……
  • DENSE_RANK函数列出相同并列值,并对下一顺序值不跳号,例如1,2,3,3,3,4,5,6……
  • RANK函数列出相同并列值,并对下一顺序值跳号,例如1,2,3,3,3,6,7,8……

partition by与order by的参数支持除LOB、JSON、XMLTYPE、UDT外的其它数据类型。

示例

-- sales_info_range表中包含如下字段和数据SELECT year,month,branch,product,quantity,amount,salsperson FROM sales_info_range;YEAR  MONTH BRANCH PRODUCT      QUANTITY      AMOUNT SALSPERSON----- ----- ------ --------- ----------- ----------- -------------2001  01    0101   11001              30         500 02010100112000  12    0102   11001              20         3002015  11    0101   11001              20         3002015  03    0102   11001              20         3002021  10    0101   11001              20         3002021  05    0101   11001              40         600-- 按branch进行分组,并在组内按amount进行排序SELECT branch,amount,year,month,quantity,
		ROW_NUMBER() OVER (PARTITION BY branch ORDER BY amount) rownumber_resFROM sales_infoWHERE product='11001'ORDER BY branch,quantity;BRANCH      AMOUNT YEAR  MONTH    QUANTITY         ROWNUMBER_RES------ ----------- ----- ----- ----------- ---------------------0101           300 2015  11             20                     10101           600 2021  05             40                     20102           300 2015  03             20                     20102           300 2000  12             20                     10201           500 2001  01             30                     10402           300 2021  10             20                     1
代码
row_number::= ROW_NUMBER "("")" OVER "(" [query_partition_clause] order_by_clause ")"

ROW_NUMBER为 窗口函数,其语法描述及约束与 DENSE_RANK函数、 RANK函数一致,区别在于排序时对并列值的处理:

  • 本函数不列出并列值,而是根据返回的结果递增,不跳号,例如1,2,3,4,5,6,7,8……
  • DENSE_RANK函数列出相同并列值,并对下一顺序值不跳号,例如1,2,3,3,3,4,5,6……
  • RANK函数列出相同并列值,并对下一顺序值跳号,例如1,2,3,3,3,6,7,8……

partition by与order by的参数支持除LOB、JSON、XMLTYPE、UDT外的其它数据类型。

示例

-- sales_info_range表中包含如下字段和数据SELECT year,month,branch,product,quantity,amount,salsperson FROM sales_info_range;YEAR  MONTH BRANCH PRODUCT      QUANTITY      AMOUNT SALSPERSON----- ----- ------ --------- ----------- ----------- -------------2001  01    0101   11001              30         500 02010100112000  12    0102   11001              20         3002015  11    0101   11001              20         3002015  03    0102   11001              20         3002021  10    0101   11001              20         3002021  05    0101   11001              40         600-- 按branch进行分组,并在组内按amount进行排序SELECT branch,amount,year,month,quantity,
		ROW_NUMBER() OVER (PARTITION BY branch ORDER BY amount) rownumber_resFROM sales_infoWHERE product='11001'ORDER BY branch,quantity;BRANCH      AMOUNT YEAR  MONTH    QUANTITY         ROWNUMBER_RES------ ----------- ----- ----- ----------- ---------------------0101           300 2015  11             20                     10101           600 2021  05             40                     20102           300 2015  03             20                     20102           300 2000  12             20                     10201           500 2001  01             30                     10402           300 2021  10             20                     1


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3092262/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: YashanDB RPAD函数
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    639739