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)) グループを使用すると、「グループ関数の使用が無効です」というエラーが表示されます。クエリにhaving句を含める必要があると思います。しかし、同じことを行う方法がわかりません。

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 に答える