Estoy tratando de contar a todos los actores individuales de las películas en 2004, el problema es que cuando intenté usar la función count (), me devolvió la cantidad de veces que cada actor apareció en una película ese año. básicamente no puedo hacer que count () juegue bien con la función GROUP BY.

SELECT COUNT(name) FROM people
INNER JOIN stars ON stars.person_id = people.id
INNER JOIN movies ON stars.movie_id = movies.id 
WHERE movies.year = 2004 
GROUP BY name;

Tablas relevantes: películas (id, título, año), estrellas (movie_id, person_id), personas (id, nombre)

0
CodeForX 4 may. 2020 a las 05:36

2 respuestas

La mejor respuesta

Solo necesita contar el número de DISTINCT person_id en stars (no es necesario usar la tabla people) que se han incluido en las películas realizadas en 2004:

SELECT COUNT(DISTINCT person_id) AS num_actors
FROM stars
JOIN movies ON movies.id = stars.movie_id
WHERE movies.year = 2004
0
Nick 4 may. 2020 a las 02:50

Aparentemente no está especificando el campo que desea utilizar para la agregación. Consulta devolverá el nombre de los actores y el recuento respectivo de películas. Intenta abajo,

SELECT name,COUNT(*) FROM people
INNER JOIN stars ON stars.person_id = people.id
INNER JOIN movies ON stars.movie_id = movies.id 
WHERE movies.year = 2004 
GROUP BY name;
0
VN'sCorner 4 may. 2020 a las 02:57