1

我有一个如下的 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, PublicationName 使用 max(sum(ReferenceCount + CitationCount)) 组,则会收到“组函数使用无效”错误。我相信我应该在我的查询中包含Have子句。但我不确定如何做同样的事情。

4

2 回答 2

2

如果我对问题的理解正确,您需要引用次数最多的出版物的所有记录。出版物及其引用计数由下式给出:

SELECT PublicationName, Sum(ReferenceCount + CitationCount)
from Author
Group by PublicationName
order by Sum(ReferenceCount + CitationCount) desc
limit 1;

order bylimit 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
于 2013-09-04T15:15:27.137 回答
0

尝试这个:

SELECT AuthorID, PublicationName, Max(ReferenceCount+CitationCount) 
FROM Author 
GROUP BY AuthorID

您的查询的问题是 SUM() 对许多行的列值求和。它不能用于按照您想要的方式对列进行求和。为此,通常只需使用加号 (+)。

于 2013-09-04T15:39:38.447 回答