使用ROW_NUMBER()将第1个ARRAY与第2个,第3个,第4个等进行比较

时间:2018-09-25 22:54:48

标签: sql postgresql row-number

我正在使用ROW_NUMBER,并且试图将 rn 1 中的arr rn 2,3,4中的arr进行比较,等等 看看它们是否重叠。我可以通过子查询/简单 加入来实现。有什么方法可以避免加入联接?

rn | id | job | arr    |desired_result
---+----+-----+--------+---------
 1 | 1  | 100 | {1,2}  | {1,2}
 2 | 1  | 101 | {2,3}  | {1,2}
 3 | 1  | 102 | {5,6,8}| {1,2}
 4 | 1  | 103 | {2,7}  | {1,2}

我做了一个dbfiddle

--USING JOIN 
WITH a AS (
SELECT 
ROW_NUMBER() OVER (PARTITION BY id ORDER by job) as rn
,*
FROM a_table
)
SELECT *
FROM (
SELECT id,arr
FROM a 
WHERE rn = 1 
) x
JOIN a
ON a.id=x.id

1 个答案:

答案 0 :(得分:3)

您可以使用first_value()

SELECT a.*, first_value(arr) over (partition by id order by job)
FROM a_table a;

row_number()似乎不是必需的。