[英]Finding Max of two nested aggregate functions in SQL
我有一个具有以下表和属性的MS Access 2007数据库:
时间表表示角色是否已访问过行星,一个行星可能有多个条目。
我试图得到的查询是这个:
对于每部电影,哪个角色访问的行星数量最多?
这是我的尝试:
SELECT T.Movie, T.[Character's Name], Count(T.[Planet's Name]) AS planets
FROM TimeTable T
GROUP BY T.Movie, T.[Character's Name]
HAVING Count(T.[Planet's Name]) >= ALL (SELECT Count(T2.[Planet's Name])
FROM TimeTable T2 WHERE T.Movie = T2.Movie);
它给了我一个空的结果。 我的查询出了什么问题?
您要求的行大于或等于所有行。 下面的查询将返回匹配项,即,将返回所有具有相同最大值的行。
SELECT t.movie,
t.character,
Count(t.planet) AS CountOfPlanet
FROM timetable t
GROUP BY t.movie, t.character
HAVING Count(t.planet) = (
SELECT Max(countofplanet)
FROM (
SELECT movie,
[character],
Count(planet) AS CountOfPlanet
FROM timetable
GROUP BY movie, [character]) q
WHERE q.movie = t.movie)
恐怕我无法应付您的字段名称。 我可能忽略了空格,但是撇号的位置太远了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.