在SQL中查找两个嵌套聚合函数的最大值

在SQL中查找两个嵌套聚合函数的最大值,sql,ms-access,Sql,Ms Access,我有一个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.[Charac

我有一个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) 

恐怕我无法处理你的域名。我可能忽略了空格,但撇号太离谱了

谢谢,那正是我想要的。