这是我的代码:
select yr,count(*)
from movie
join casting on casting.movieid=movie.id
join actor on casting.actorid = actor.id
where actor.name = 'John Travolta'
group by yr;
这是问题:
那是“约翰·特拉沃尔塔”最忙碌的几年。显示他每年制作的电影数量。
这是表结构:
movie(id, title, yr, score, votes, director)
actor(id, name)
casting(movieid, actorid, ord)
这是我得到的输出:
yr count(*)
1976 1
1977 1
1978 1
1981 1
1994 1
-- etc.
我需要获取其中的行count(*)
是最大值。
我该怎么做呢?
Use:
SELECT m.yr,
COUNT(*) AS num_movies
FROM MOVIE m
JOIN CASTING c ON c.movieid = m.id
JOIN ACTOR a ON a.id = c.actorid
AND a.name = 'John Travolta'
GROUP BY m.yr
ORDER BY num_movies DESC, m.yr DESC
订购方式num_movies DESC
会将最高值放在结果集的顶部。如果无数年的计数相同,则m.yr
将把最近一年放在顶部...直到下一年num_movies
值变化。
我可以使用 MAX(COUNT(*)) 吗?
不可以,您不能在同一 SELECT 子句中将聚合函数分层。内部聚合必须在子查询中执行。 IE:
SELECT MAX(y.num)
FROM (SELECT COUNT(*) AS num
FROM TABLE x) y
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)