我有一个MySQL表格如下。
**AuthorID**, **PublicationName**, ReferenceCount, CitationCount
AuthorID和PublicationName充当主键。我需要为所有作者找到ReferenceCount和CitationCount的最大总和。例如,数据如下。
1 AAA 2 5
1 BBB 1 3
1 CCC 2 4
2 AAA 1 4
在这种情况下,我需要输出为
1 AAA 7
2 AAA 5
我尝试了以下查询。
SELECT AuthorID, PublicationName, Max(Sum(ReferenceCount + CitationCount))
from Author
Group by AuthorID, PublicationName
如果我按AuthorID使用max(sum(ReferenceCount + CitationCount))组,则发布名称我收到错误为“组函数使用无效”。我相信我应该在查询中包含拥有子句。但我不确定如何做同样的事情。
答案 0 :(得分:2)
如果我理解正确的问题,那么您希望发布引用次数最多的所有记录。该出版物及其引用次数由下式给出:
SELECT PublicationName, Sum(ReferenceCount + CitationCount)
from Author
Group by PublicationName
order by Sum(ReferenceCount + CitationCount) desc
limit 1;
order by
和limit 1
为您提供最高价值。
如果您希望发布的所有记录具有最大总和:
select a.*
from Author a join
(SELECT PublicationName, Sum(ReferenceCount + CitationCount)
from Author
Group by PublicationName
order by Sum(ReferenceCount + CitationCount) desc
limit 1
) asum
on a.PublicationName = asum.PublicationName
答案 1 :(得分:0)
试试这个:
SELECT AuthorID, PublicationName, Max(ReferenceCount+CitationCount)
FROM Author
GROUP BY AuthorID
查询的问题在于SUM()汇总了许多行的列值。它不能用于按您想要的方式对列进行求和。为此,通常使用加号(+)。