这可能很简单,但我还没有得到它。我是通过sql查询对该组的新手,但对sql选择有基本的了解。
我有一个名为Topics:
的简单表Student | Interviewer | Topic
==========================================
Chuck | Susan | Project Management
Jill | Jack | Microsoft Word
Chuck | Jack | Microsoft Word
Bobby | Jane | Project Management
Jill | Jack | Python Scripting
这是样本数据。
对于每次访谈,为每个主题添加一行。一些学生接受了一位以上的面试官的访问,一些访谈只涉及一个主题,其他访谈涉及多个主题。
我正在尝试编写一个查询,该查询返回学生和面试者对,这些学生只接受过一个人的采访,但被问到有关多个主题的问题。
因此,通过上面的示例数据,我只能回到一行:(吉尔,杰克)。
我已尝试过group by和sql查询的各种组合,但它们都没有返回我想要的内容。我认为,当涉及到按查询分组时,我错过了一些东西。我已经阅读了多个关于分组和搜索的网站,并搜索了其他堆栈溢出问题,但它只是没有点击。
答案 0 :(得分:3)
您可以使用having
和select student,max(interviewer) --or min(interviewer) as there will only be one interviewer
from tbl
group by student
having count(distinct interviewer) = 1 and count(topic) > 1
执行此操作。
myFile
答案 1 :(得分:0)
我只想指出count(distinct)
可能很昂贵。另一种选择是:
select t.student, max(t.interviewer)
from tbl t
group by t.student
having min(interviewer) = max(interviewer) and
min(topic) <> max(topic);