it-swarm-id.com

kelompok hitung mysql dengan memiliki

Saya punya tabel ini:

Movies (ID, Genre)

Sebuah film dapat memiliki banyak genre, jadi ID tidak spesifik untuk genre, itu adalah hubungan many to many. Saya ingin permintaan untuk menemukan jumlah total film yang memiliki tepat 4 genre. Permintaan saat ini yang saya miliki adalah

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

Namun, ini mengembalikan saya daftar 4 daripada jumlah total. Bagaimana cara mendapatkan jumlah total alih-alih daftar count(*)?

40
Michael Liao

Salah satu caranya adalah dengan menggunakan kueri bersarang:

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

Kueri dalam mendapatkan semua film yang memiliki tepat 4 genre, lalu kueri luar menghitung berapa banyak baris yang dikembalikan oleh kueri dalam.

73
Marc B
SELECT COUNT(*) 
FROM   (SELECT COUNT(*) 
        FROM   movies 
        GROUP  BY id 
        HAVING COUNT(genre) = 4) t
6
Conrad Frix

Mungkin

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

meskipun itu tidak akan menjadi jumlah dari semua film, hanya berapa banyak yang memiliki 4 genre.

Jadi mungkin Anda mau

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

Bagaimana dengan:

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