For example in this simple table:
| Group | Element |
|---|---|
| xxx | a |
| xxx | b |
| xxx | c |
| xxx | d |
| xxx | e |
| yyy | a |
| yyy | b |
| yyy | f |
| yyy | g |
| zzz | a |
| zzz | b |
| zzz | c |
| zzz | g |
‘a’ and ‘b’ are the combination of elements present the most in all groups
Advertisement
Answer
You can do it with a triangle join
with c1 as ( select t1.grp, t1.Element e1, t2.Element e2 from tbl t1 join tbl t2 on t1.grp = t2.grp and t1.Element < t2.Element ) select e1,e2 from c1 group by e1,e2 order by count(*) desc limit 1