Подсчет отдельных элементов, которые соответствуют определенным критериям без дубликатов в sqlite3 - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь сосчитать всех отдельных актеров из фильмов 2004 года, проблема в том, что когда я пытался использовать функцию count (), она возвращала, сколько раз каждый актер появлялся в мове ie в этом году. в основном я не могу заставить count () хорошо играть с функцией 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;

соответствующие таблицы: фильмы (id, название, год), звезды (movie_id, person_id), люди (id, name)

Ответы [ 2 ]

0 голосов
/ 04 мая 2020

Вам просто нужно посчитать количество DISTINCT person_id в stars (вообще не нужно использовать таблицу people), которые были в фильмах, снятых в 2004 году:

SELECT COUNT(DISTINCT person_id) AS num_actors
FROM stars
JOIN movies ON movies.id = stars.movie_id
WHERE movies.year = 2004
0 голосов
/ 04 мая 2020

Очевидно, вы не указываете поле, которое вы собираетесь использовать для агрегации. Запрос выдаст имена актеров и соответствующее количество фильмов. Попробуйте ниже,

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...