[英]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.