99 votes

Puis-je faire un max(count(*)) dans SQL ?

Voici mon code :

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;

Voici la question :

Qui ont été les années les plus occupées pour 'John Travolta'. Montrer le nombre de films qu'il a fait pour chaque année.

Voici la structure de la table :

movie(id, title, yr, score, votes, director)
actor(id, name)
casting(movieid, actorid, ord)

Voici le résultat que j'obtiens :

yr      count(*)
1976    1
1977    1
1978    1
1981    1
1994    1
-- etc.

Je dois obtenir les lignes pour lesquelles count(*) est max. Comment je fais ça ?

41voto

Wolph Points 28062

Il suffit de commander par count(*) desc et vous obtiendrez le plus haut (si vous le combinez avec limit 1)

7voto

vigour Points 21
SELECT * from 
(
SELECT yr as YEAR, COUNT(title) as TCOUNT
FROM actor
JOIN casting ON actor.id = casting.actorid
JOIN movie ON casting.movieid = movie.id
WHERE name = 'John Travolta'
GROUP BY yr
order by TCOUNT desc
) res
where rownum < 2

4voto

Ropman Points 11

c'est de ce site - http://sqlzoo.net/3.htm 2 solutions possibles :

avec TOP 1 un ORDRE par ... DESC :

SELECT yr, COUNT(title) 
FROM actor 
JOIN casting ON actor.id=actorid
JOIN movie ON movie.id=movieid
WHERE name = 'John Travolta'
GROUP BY yr
HAVING count(title)=(SELECT TOP 1 COUNT(title) 
FROM casting 
JOIN movie ON movieid=movie.id 
JOIN actor ON actor.id=actorid
WHERE name='John Travolta'
GROUP BY yr
ORDER BY count(title) desc)

avec MAX :

SELECT yr, COUNT(title) 
FROM actor  
JOIN casting ON actor.id=actorid    
JOIN movie ON movie.id=movieid
WHERE name = 'John Travolta'
GROUP BY yr
HAVING 
    count(title)=
        (SELECT MAX(A.CNT) 
            FROM (SELECT COUNT(title) AS CNT FROM actor 
                JOIN casting ON actor.id=actorid
                JOIN movie ON movie.id=movieid
                    WHERE name = 'John Travolta'
                    GROUP BY (yr)) AS A)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X