我已经在stackoverflow上搜索了这个我的特殊问题并没有被问到。
问题:
这是约翰特拉沃尔塔最繁忙的年份,展示了他每年制作电影的年份和电影的数量。
表格:
查询:
SELECT y.yr,MAX(y.count)
FROM(
SELECT movie.yr,COUNT(movie.yr) AS count
FROM (movie JOIN casting ON (movie.id=movieid)) JOIN actor ON (actor.id=actorid)
WHERE name='John Travolta'
GROUP BY yr
ORDER BY COUNT(movie.yr) DESC) y
GROUP BY yr
结果显示许多行的MAX(y.count)范围从1到3,但接受的答案只显示1行,max = 3.如何更正上述代码以限制只有一个最繁忙的年份,保持上面的代码基本上完好无损?
给定解决方案:
SELECT yr,COUNT(title)FROM
电影JOIN强制转换为movie.id = movieid
JOIN actor ON actorid=actor.id
其中name =' John Travolta'
GROUP BY yr
HAVING COUNT(title)=(SELECT MAX(c)FROM
(SELECT yr,COUNT(title)AS c FROM
电影JOIN强制转换为movie.id = movieid
JOIN actor ON actorid=actor.id
其中name =' John Travolta'
GROUP BY yr)AS t )
最后的话:我希望人们不要在没有仔细阅读问题的情况下停止标记重复,请不要像提问者那样懒散。我从6到7年前开始阅读线索,答案的文明性和成熟度肯定会急剧下降。我无法相信曾经有许多人花时间向他们不知道的新手解释,而不是将别人撕裂。
答案 0 :(得分:1)
这样的事情?
select t2.yr, count(*) as NbMovies
from movie t1
inner join casting t2 on t1.id=t2.movieid
inner join actor t3 on t3.id=t2.actorid
where t3.name='John Travolta'
group by t2.yr
having count(*)>2
order by NbMovies desc