我有一张这样的table:
id data version rulecode
---------------------------
a1 1 100 x1
a2 1 100 x1
a1 1 200 x2
a4 2 500 x2
a7 2 200 x1
a6 2 500 x1
a7 2 500 x2
a8 2 150 x2
a9 3 120 x1
a10 3 130 x2
a10 3 120 x1
a12 3 130 x2
a13 3 130 x1
a14 3 110 x2
a15 3 110 x1
a16 4 220 x1
a17 4 230 x2
a18 4 240 x2
a19 4 240 x1
..........................
..........................
现在我只想要那些最大 version
以及 data
值为(1、2和4)
当我试着 dense_rank()
,我只得到那些 1
价值来自 data
列:
SELECT * FROM
(SELECT *, dense_rank() OVER (ORDER BY version desc) as col
FROM public.table_name WHERE data in (1,2,4))x
WHERE x.col=1
输出:
id data version rulecode
---------------------------
a1 1 200 x2
我的预期产出:
id data version rulecode
a1 1 200 x2
a4 2 500 x2
a6 2 500 x1
a8 2 500 x2
a18 4 240 x2
a19 4 240 x1
注:值 data
纵队一直到百万。
有人能帮我得到预期的结果吗?
2条答案
按热度按时间elcex8rz1#
你好像想要一个
PARTITION BY
:w1e3prcc2#
使用分析函数:
注意,我们还可以过滤
data
cte中的值。我将保持原样,以便对你的问题有一个全面的解决办法。