如何在sql中获取多个值?

uidvcgyl  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(307)

我陷入了困境。
我有一个postgres数据库,我必须根据联合发表论文的数量筛选出前5名、唯一的合著者对。
我想返回作者姓名和论文数量对

到目前为止我所拥有的:

select persons.name as person, count(papers.pkey) as amount 
from persons 
  inner join authpapers on authpapers.akey = persons.akey 
  inner join papers on authpapers.pkey = papers.pkey  
group by persons.name 
order by amount desc limit 5;

因此,我得到了前5名作者学士学位的名称和论文计数,但我希望论文的作者有一个共同作者。

kninwzqo

kninwzqo1#

您可以自行加入 persons 表生成作者组合,然后通过加入每个人的论文 authpapers 每个用户一次,最后筛选匹配的纸张。最后一步是聚合和排序:

select p1.name as person1, p2.name person2, count(*) as amount
from persons p1
inner join persons p2 on p2.akey > p1.akey
inner join authpapers ap1 on ap1.akey = p1.akey 
inner join authpapers ap2 on ap2.akey = p2.akey 
where ap1.pkey = ap2.pkey
group by p1.akey, p2.akey
order by amount desc limit 5;

请注意,您不需要 papers 表以获得所需的结果。

相关问题