这是我的表格:
CREATE TABLE ABC(
key NUMBER(5),
val NUMBER(5)
);
insert into ABC (key, val) values (1,1);
insert into ABC (key, val) values (1,2);
insert into ABC (key, val) values (1,3);
insert into ABC (key, val) values (2,3);
insert into ABC (key, val) values (1,4);
insert into ABC (key, val) values (2,4);
insert into ABC (key, val) values (2,5);
insert into ABC (key, val) values (3,5);
insert into ABC (key, val) values (1,6);
insert into ABC (key, val) values (2,6);
我想找到共享相同值的最大键对,并将它们列出,在上面的示例中,表中出现的最大键对是(1,2),它们共享值(3,4, 6)
最佳答案
请尝试如下:
select ab,val from (
select rank() over( order by cnt desc) rn, ab, val ,cnt
from (
select listagg(key,',') within group(order by val) ab,val,
count(1) over (partition by (listagg(key,',') within group(order by val))) cnt
from abc
group by val
having count(*) > 1))
where rn = 1;
关于sql - 寻找共享相同值的键的最大组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65444718/