SQL - Oracle - 与成员共享的组

时间:2018-02-07 00:16:53

标签: sql oracle

列出至少有两名成员的学生团体

select a.studentid, a.groupid
from membersof a
join (
  select studentid, groupid
  from membersof 
  group by groupid
  where count(studentid) >= 2) b on a.studentid = b.studentid
where a.studentid = b.studentid

我认为我没有正确得到这个,但基本上,我需要找到至少有两个成员共同的groupID。通过上面的查询,我不断收到“缺少右括号错误,但我关闭了连接和计数,任何帮助/指导都表示赞赏。

2 个答案:

答案 0 :(得分:2)

比较聚合列时需要使用HAVING。

  select studentid, groupid
  from membersof 
  group by groupid
  HAVING count(studentid) >= 2

答案 1 :(得分:0)

你想要成对的小组,由学生加入,然后聚合计数:

select m1.groupid, m2.groupid
from membersof m1 join
     membersof m2
     on m1.studentid = m2.studentid and m1.groupid < m2.groupid
group by m1.groupid, m2.groupid
having count(*) >= 2;