Can I do a max(count(*)) in SQL?

前端 未结 11 1825
遥遥无期
遥遥无期 2020-11-29 01:02

Here\'s my code:

    select yr,count(*)  from movie
join casting on casting.movieid=movie.id
join actor on casting.actorid = actor.id
where actor.name = \'Jo         


        
11条回答
  •  野性不改
    2020-11-29 01:54

    it's from this site - http://sqlzoo.net/3.htm 2 possible solutions:

    with TOP 1 a ORDER BY ... 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)
    

    with 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)
    

提交回复
热议问题