繁体   English   中英

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

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

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