SQL查询 - 查找最高索引号的行

时间:2017-10-31 12:22:16

标签: sql oracle greatest-n-per-group

我正在努力寻找一种正确的方法来查询以下场景。考虑下面的表作为示例,其中我希望具有index_no 124的行用于该列的dvpc和pid值。请建议。

Index_No    dvpc     pid     rate
123         123      30      0.01
124         123      30      0.02

2 个答案:

答案 0 :(得分:0)

您可以使用max()和GROUP BY。

例如:

select
    dvpc,
    pid,
    max(index_no) as max_index
from
    your_table
group by
    dvpc,
    pid

如果你需要该指数的费率,那么这样的东西就可以了

select
    t.*
from
    your_table t
inner join
(
select
    dvpc,
    pid,
    max(index_no) as max_index
from
    your_table
group by
    dvpc,
    pid
) s
on t.index_no = s.max_index

希望这有帮助

答案 1 :(得分:0)

使用ROW_NUMBERIndex_Nodvpc的每个值指定pid的排名,然后过滤到排名最高的排名。

SELECT Index_No, dvpc, pid, rate
FROM (SELECT Index_No, dvpc, pid, rate,
        ROW_NUMBER() OVER (PARTITION BY dvpc, pid ORDER BY Index_no DESC) rn
      FROM your_table) yt
WHERE rn = 1;