[英]Using ROW_NUMBER () to Compare 1st ARRAY to 2nd, 3rd, 4th, etc
I'm using ROW_NUMBER
and I'm trying to compare arr
in rn 1 to arr
in rn 2,3,4 ,etc to see if they overlap. 我使用
ROW_NUMBER
,我试图比较arr
在RN 1到arr
在RN 2,3,4等,看看他们是否重叠。 I can do this with a subquery / simple join . 我可以用一个子查询做到这一点/简单 连接 。 Is there a way that AVOIDS a join?
有没有一种方法可以避免加入?
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}
I made a dbfiddle 我做了一个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
You can use first_value()
: 您可以使用
first_value()
:
SELECT a.*, first_value(arr) over (partition by id order by job)
FROM a_table a;
row_number()
does not seem necessary. row_number()
似乎不是必需的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.