
我试图用这个查询来解决这个SQL练习,但是我无法理解它是否能够工作,因为这个部分:
HAVING COUNT(*) = (
SELECT MAX(TotalP)
FROM (SELECT AuthorCode, Edition, Conference, Count(*) TotalP
FROM AUTHOR_PRESENTS_ARTICLE APA1
WHERE APA1.Edition = APA.Edition AND APA1.Conference = APA.Conference
GROUP BY AuthorCode, Edition, Conference))SELECT不是每次都返回相同的值(最大值)吗,所以我不能为会议的每个版本都返回相同的值吗?我附上我的完整代码如下:
SELECT EC.EditionName,
APA.AuthorCode
FROM EDITIONS_OF_THE_CONFERENCE EC,
AUTHOR_PRESENTS_ARTICLE APA
WHERE EC.Conference = APA.Conference
AND EC.Conference IN(
SELECT Conference
FROM EDITIONS_OF_CONFERENCE
GROUP BY Conference --L'EDITION SARA' DIVERSA ESSENDO ENTRAMBE PK
HAVING COUNT(*) >= 10
)
GROUP BY APA.Edition,
APA.EditionName,
APA.Conference,
APA.AuthorCode
HAVING COUNT(*) = (
SELECT MAX(TotalP)
FROM (
SELECT AuthorCode,
Edition,
Conference,
Count(*) TotalP
FROM AUTHOR_PRESENTS_ARTICLE APA1
WHERE APA1.Edition = APA.Edition
AND APA1.Conference = APA.Conference
GROUP BY AuthorCode, Edition, Conference
)
)发布于 2022-06-11 09:37:08
不每次都返回相同的值(最大值),
不,它不会每次返回与子查询与外部查询相关的最大值。
如果你用过:
SELECT MAX(TotalP)
FROM (
SELECT AuthorCode,
Edition,
Conference,
Count(*) TotalP
FROM AUTHOR_PRESENTS_ARTICLE APA1
GROUP BY AuthorCode, Edition, Conference
)然后,它将返回所有文章的最大计数,但您没有返回,并添加了一个WHERE过滤器:
SELECT MAX(TotalP)
FROM (
SELECT AuthorCode,
Edition,
Conference,
Count(*) TotalP
FROM AUTHOR_PRESENTS_ARTICLE APA1
WHERE APA1.Edition = APA.Edition
AND APA1.Conference = APA.Conference
GROUP BY AuthorCode, Edition, Conference
)这将它限制在从外部查询中为该conference和edition找到最大值,因此当您有不同的conference或不同的edition时,您将找到该特定配对的最大值。
https://stackoverflow.com/questions/72583090
复制相似问题