繁体   English   中英

每组最多

[英]Max for each group

练习的考验是:考虑至少有10个版本的会议,该会议的每个版本都应显示该版本的名称以及在该版本中展示最多文章的作者的代码。 我的表是:

Author(CodAuthor, Name, Surname);
Article(CodArticle, Title);
Authors_Article(CodAuthor, CodArticle);
Conference_Editions(Conference, Edition, EditionName);
Author_presents_Article(CodAuthor, Date, Room, CodArticle, Conference, Edition);

我写了以下代码:

SELECT Apa.CodAuthor, Ec.EdizionName
FROM Conference_Editions Ec JOIN Author_presents_Article Apa ON (Ec.Edition = Apa.Edition) AND (Ec.Conference = Apa.Conference)
WHERE (Apa.Conference In (SELECT Conference
                          FROM Conference_Editions
                          GROUP BY Conference
                          HAVING COUNT(Edition)>10))
GROUP BY Apa.Conference, Apa.Edition, Apa.CodAuthor, Ec.EdizionName;

但是我不知道如何找到每个版本发表最多文章的作者。

那这个解决方案呢?

SELECT Apa.CodAuthor, Ec.EdizionName
FROM Conference_Editions Ec JOIN Author_presents_Article Apa ON (Ec.Edition = Apa.Edition) AND (Ec.Conference = Apa.Conference)
WHERE (Apa.Conference In (SELECT Conference
                          FROM Conference_Editions
                          GROUP BY Conference
                          HAVING COUNT(Edition)>=10))
GROUP BY Apa.Conference, Apa.Edition, Apa.CodAuthor, Ec.EdizionName
HAVING COUNT(*)=(SELECT MAX(Counter)
                 FROM (SELECT Conference, Edition, AuthorCode, COUNT(*) AS Counter
                       FROM Author_presents_Article
                       GROUP BY Conference, Edition, AuthorCode) AS Counting
                 WHERE Apa.Conference=Counting.Conference AND Apa.Edition=Counting.Edition);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM