在oracle sql中有没有查找排名的函数

7cwmlq89  于 2023-03-29  发布在  Oracle
关注(0)|答案(1)|浏览(120)

我有三个表,其中有四个列,并在所有这些基于一些标准.我必须找到前100在所有这些线索,我实现了它在Oracle SQL中使用排名功能.但我的问题是,现在我必须进一步拆分它们下来.说我得到了顶部300从这3个表的线索(前100从所有三个),现在我有一列说,它有价值4。所以我必须采取领先一个接一个从这300线索优先级order.top1从第一个表,前1从第二个表,从第三个表的top 1,然后再从第一个表的top 1.有没有什么办法在oracle sql中实现这一点

3z6pesqy

3z6pesqy1#

您可以统一数据并设置自定义表优先级(取决于您的需要),然后使用当前的行顺序和新列再次对数据进行排名。它看起来像这样:

SELECT *    
      ,ROW_NUMBER() OVER (ORDER BY RecordPriority, TablePriority) AS FilteringColumn
FROM
(

    SELECT t1.*
          ,RANK AS RecordPriority
          ,1 AS TablePriority
    FROM T1

    UNION ALL

    SELECT t1.*
          ,RANK AS RecordPriority
          ,2 AS TablePriority
    FROM T1

    UNION ALL

    SELECT t1.*
          ,RANK AS RecordPriority
          ,3 AS TablePriority
    FROM T1

) DS

然后,您可以使用FilteringColumn轻松获取行。

相关问题