SQL Запрос дает неверный результат - PullRequest
1 голос
/ 07 мая 2020

Я написал этот код, чтобы найти «Для каждого года подсчитать количество фильмов в этом году, в которых были только женщины-актеры». *

Когда я отправил этот код, я получил ответ, что «ваш вывод неверен. При выборе фильмов, не относящихся к женщинам, вы также должны включить MID, которые имеют нулевые PID в таблице M_cast, как фильмы, не относящиеся к женщинам». Следовательно, я новичок в sql, я не понимаю, где я ошибаюсь. Пожалуйста, предложите мне, где мне нужно изменить этот код.

Вот схема - https://i.stack.imgur.com/sWRSN.png

1 Ответ

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

Вы можете использовать UNION ALL with M_CAST where PID is NULL в соответствии с вашими требованиями

                         WITH
                            k AS
                            (SELECT MC.MID a
                            FROM M_CAST MC
                            JOIN PERSON P ON TRIM(P.PID) = TRIM(MC.PID)
                            WHERE TRIM(P.GENDER) IN ('Male', 'None')
                            UNION ALL
                            SELECT MC.MID a
                            FROM M_CAST MC
                            WHERE MC.PID IS NULL 
                              )

                            SELECT CAST(SUBSTR(M.year,-4) AS UNASSIGNED) Year, 
                            COUNT(DISTINCT TRIM(MID)) number_of_movies
                            FROM MOVIE M
                            WHERE TRIM(MID) NOT IN (SELECT a FROM k) 
                            GROUP BY CAST(SUBSTR(M.year,-4) AS UNASSIGNED)
                            ORDER BY Year 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...