PostgreSQL中的分区

4
我有两个表,Paper和Author。Paper包含给定时间段内发表的所有论文,Authors中有一个作者名称列和另一个列中为发表的论文 ID(因此,同一作者可能会出现多次)。现在我需要找到每篇论文平均作者数量。
我的尝试:
    (SELECT COUNT(*) FROM Author as decimal)/(SELECT COUNT(*) FROM Paper);

显然,第一部分将给我表格Author中的行数,第二部分将给我发表论文的总数。但是,我遇到了一个错误“ERROR: syntax error at or near "/"”。我认为这是因为我可能在除以一个表格或表格的结果(由于我是postgresql的初学者,我可能非常错误,请纠正我如果是这种情况)。我只想知道如何解决这个错误。谢谢!


这个问题早已得到解答,但你的语法错误是因为缺少第一个“select”:SELECT (SELECT COUNT(*) FROM Author as decimal)/(SELECT COUNT(*) FROM Paper); - Dan Armstrong
2个回答

3
假设所有论文都至少有一位作者:
select count(*) * 1.0 / count(distinct paper_id)
from authors;

* 1.0的作用是避免整数除法。


明白了。非常感谢! - user10148816

-1

你可以联接表格并分离出特定的信息,例如:

SELECT 
COUNT(au.*)/COUNT(pa.*) AS division_result      -- depends on your data

FROM Author au

JOIN Paper pa
ON                               -- join criteria depends on your data(eg.au.id=pa.id  )

希望这可以帮到你(我假设你没有使用BigQuery) 此致敬礼。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接