복붙노트

[SQL] 함으로써 그룹 카운트 MYSQL

SQL

함으로써 그룹 카운트 MYSQL

나는이 테이블이 :

Movies (ID, Genre)

ID가이 장르에 국한되지 그래서 영화는, 여러 장르를 가질 수 있습니다, 많은 관계로 많은입니다. 나는 쿼리가 정확히 4 장르에서이 영화의 총 수를 찾고 싶어요. 내가 가진 현재 쿼리입니다

  SELECT COUNT(*) 
    FROM Movies 
GROUP BY ID 
  HAVING COUNT(Genre) = 4

그러나,이 반환 나에게 4 개의 대신의 총합의 목록입니다. 어떻게 합계 합계 대신 COUNT (*)의 목록을받을 수 있나요?

해결법

  1. ==============================

    1.한 가지 방법은 중첩 된 쿼리를 사용하는 것입니다 :

    한 가지 방법은 중첩 된 쿼리를 사용하는 것입니다 :

    SELECT count(*)
    FROM (
       SELECT COUNT(Genre) AS count
       FROM movies
       GROUP BY ID
       HAVING (count = 4)
    ) AS x
    

    내부 쿼리는 정확히 4 장르, 내부 쿼리가 반환되는 행 수를 한 후 외부 쿼리 수를 가진 모든 영화를 가져옵니다.

  2. ==============================

    2.

    SELECT COUNT(*) 
    FROM   (SELECT COUNT(*) 
            FROM   movies 
            GROUP  BY id 
            HAVING COUNT(genre) = 4) t
    
  3. ==============================

    3.아마도

    아마도

    SELECT count(*) FROM (
        SELECT COUNT(*) FROM Movies GROUP BY ID HAVING count(Genre) = 4
    ) AS the_count_total
    

    그 영화의 모든의 합,하지 않을 것이지만 4 개 장르의이 얼마나 많은.

    그래서 어쩌면 당신이 원하는

    SELECT sum(
        SELECT COUNT(*) FROM Movies GROUP BY ID having Count(Genre) = 4
    ) as the_sum_total
    
  4. ==============================

    4.이건 어떤가요:

    이건 어떤가요:

    SELECT COUNT(*) FROM (SELECT ID FROM Movies GROUP BY ID HAVING COUNT(Genre)=4) a
    
  5. from https://stackoverflow.com/questions/7857538/mysql-count-group-by-having by cc-by-sa and MIT license