0
点赞
收藏
分享

微信扫一扫

【AWDP】 AWDP 赛制详解&应对方法&赛题实践 量大管饱

小沙坨 2024-09-16 阅读 32

Oracle按照某一字段值排序并显示,相同的显示序号

第一种: ROW_NUMBER

示例:

SELECT  ROW_NUMBER() OVER (ORDER BY sub.C_IDEN_RELA) AS sequence_number,sub.* FROM Testtable sub WHERE 1=1 AND sub.C_IDEN_RELA IN ('5132242092203614208','5132412321219125248','5132392474594680832') ;

效果图:
在这里插入图片描述

优化改进(日常喜欢用的)

  • ROW_NUMBER():为每一行分配一个连续的整数。
  • OVER (PARTITION BY sub.C_IDEN_RELA ORDER BY sub.C_IDEN_RELA)
    • 这部分定义了窗口框架。
    • 它指定了如何对数据进行分区和排序
  • PARTITION BY sub.C_IDEN_RELA
    • 这意味着函数将在 sub.C_IDEN_RELA 列的不同值之间重新开始计数。
    • 换句话说,对于 sub.C_IDEN_RELA 的每一个不同值,ROW_NUMBER() 都会从1开始重新编号。
  • ORDER BY sub.C_IDEN_RELA
    • 在每个分区内部,行将按照 sub.C_IDEN_RELA 的值进行排序
    • 如果 sub.C_IDEN_RELA 包含重复值,那么这些行将按照它们在表中的出现顺序进行编号

示例:

SELECT  ROW_NUMBER() OVER (PARTITION BY sub.C_IDEN_RELA ORDER BY sub.C_IDEN_RELA) AS sequence_number,sub.* FROM Testtable sub WHERE 1=1 AND sub.C_IDEN_RELA IN ('5132242092203614208','5132412321219125248','5132392474594680832') ;

效果图:
在这里插入图片描述

第二种: DENSE_RANK

SELECT  DENSE_RANK() OVER (ORDER BY sub.C_IDEN_RELA) AS sequence_number,sub.* FROM Testtable sub WHERE 1=1 AND sub.C_IDEN_RELA IN ('5132242092203614208','5132412321219125248','5132392474594680832') ;

在这里插入图片描述

第三种: ROW_NUMBER

SELECT  RANK() OVER (ORDER BY sub.C_IDEN_RELA) AS sequence_number,sub.* FROM Testtable sub WHERE 1=1 AND sub.C_IDEN_RELA IN ('5132242092203614208','5132412321219125248','5132392474594680832') ;

在这里插入图片描述

完结撒花

举报

相关推荐

0 条评论