Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите разобраться с заданием по SQL

Анастасия Мишина Ученик (83), на голосовании 1 год назад
Написать команду SELECT для реализации следующего запроса: выдать
название страны, название киностудии и суммарный объем денежных
средств, затраченных на съемки всех фильмов для киностудий,
принадлежащих странам США, Франция и Россия, при условии, что
киностудия сняла более 20 фильмов. Отсортировать по суммарному
бюджету по убыванию.
Я не могу понять эту часть название киностудии и суммарный объем денежных
средств, затраченных на съемки всех фильмов для киностудий,
принадлежащих странам США, Франция и Россия, при условии, что
киностудия сняла более 20 фильмов
Дополнен 1 год назад
чья именно киностудия сняла больше 20 фильмов?
Дополнен 1 год назад
CREATE TABLE COUNTRY
(
ID INT PRIMARY KEY IDENTITY(1,1),
COUNTRY_NAME VARCHAR(50)
)
CREATE TABLE KINO
(
K_ID INT PRIMARY KEY IDENTITY(1,1),
K_NAME VARCHAR(50) ,
ID INT REFERENCES COUNTRY (ID),

)

CREATE TABLE FILM
(
FILM_ID INT PRIMARY KEY IDENTITY(1,1),
FILM_NAME VARCHAR(50),
COST INT NOT NULL,

)
CREATE TABLE MONEY
(
MONEY_ID int PRIMARY KEY IDENTITY(1,1),
RUBLESint,
TOTAl_RUBLES int

)

CREATE TABLE FILM_IN_INDUSTRY
(
ID_FIN INT PRIMARY KEY IDENTITY(1,1),
FILM_ID INT REFERENCES FILM (FILM_ID),
K_ID INT REFERENCES KINO(K_ID),
MONEY_ID INT REFERENCES MONEY (MONEY_ID)
)
Дополнен 1 год назад
INSERT INTO COUNTRY (COUNTRY_NAME) VALUES ('Россия');
INSERT INTO COUNTRY (COUNTRY_NAME) VALUES ('США');
INSERT INTO COUNTRY (COUNTRY_NAME) VALUES ('Франция');
INSERT INTO FILM (FILM_NAME,COST) VALUES ('Три товарища',212);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('Шерлок',212);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('Туман',2121);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ВSADьс',212);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ВDFGьс',2162);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('рп',5);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ыв',21);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ыва',12);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ва',2);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ро',8);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ит',90);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('о',34);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('одл',56);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('тл',9);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ло',54);

INSERT INTO FILM (FILM_NAME,COST) VALUES ('ол',213);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ро',21);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ек',212);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('еке',212);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('лдлдс',2122);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('люкс',2112);
INSERT INTO FILM (FILM_NAME,COST) VALUES ('ык',21);
Дополнен 1 год назад
INSERT INTO KINO (K_NAME) VALUES ('DFD');
INSERT INTO KINO (K_NAME) VALUES ('DFS');
INSERT INTO KINO (K_NAME) VALUES ('VDE');
INSERT INTO KINO (K_NAME) VALUES ('YNK');

INSERT INTO MONEY (RUBLES) VALUES (1000000);
INSERT INTO MONEY (RUBLES) VALUES (32432424);
INSERT INTO MONEY (RUBLES) VALUES (4556564.00);
INSERT INTO MONEY (RUBLES) VALUES (45547);
INSERT INTO MONEY (RUBLES) VALUES (76754645);
INSERT INTO MONEY (RUBLES) VALUES (2343243);
INSERT INTO MONEY (RUBLES) VALUES (3243255);

SELECT * FROM COUNTRY
SELECT * FROM FILM
SELECT * FROM KINO

SELECT SUM (COST)
FROM FILM
WHERE FILM_ID>20
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445772) 1 год назад
>Я не могу понять эту часть название киностудии и суммарный объем денежных
средств
Загугли групповые функции COUNT и SUM и группировку данных, а также групповой фильтр HAVING.
Анастасия МишинаУченик (83) 1 год назад
я логически не могу понять задание
Jurijus Zaksas Искусственный Интеллект (445772) Что именно непонятно? Где-то у тебя должна быть табличка с фильмами, в ней - указатель на киностудию и бюджет. Просуммируй бюджеты и посчитай эти фильмы с группировкой по студиям, и выбери те, где количество фильмов на студию больше 20.
Анастасия МишинаУченик (83) 1 год назад
эту часть
Анастасия МишинаУченик (83) 1 год назад
я правильно понимаю что там нужен оператор джоин? чтобы соединить таблицу с фильмами и киностудией?
Jurijus Zaksas Искусственный Интеллект (445772) И он тоже нужен. Вообще, работай итерациями. Для начала получи список всех бюджетов фильмов всех киностудий, потом оставь только те, которые находятся в указанных странах, потом добавь группировку и подсчет, потом ограничь по 20-и фильмам.
Анастасия МишинаУченик (83) 1 год назад
Я просто не пойму как сделать так,чтобы фильмы с бюджетом(в 1 таблице) привязать к киностудии
Jurijus Zaksas Искусственный Интеллект (445772) Очевидно, по ключу. Мне отсюда твои таблицы не видно, ничего конкретного сказать не могу.
Анастасия МишинаУченик (83) 1 год назад
вот и спрашиваю нужен ли джоин чтобы соединить это в одну таблицу и по ней искать
Анастасия МишинаУченик (83) 1 год назад
в дополнение к вопросу
Jurijus Zaksas Искусственный Интеллект (445772) У тебя фильмы не связаны с киностудиями, поэтому не получится.
Анастасия МишинаУченик (83) 1 год назад
я связываю так и у меня нулы выдаются в выводе таблицы
Jurijus Zaksas Искусственный Интеллект (445772) Ты не можешь их связать в запросе, для этого нет данных. Добавь поле киностудии в таблицу фильмов для начала.
Анастасия МишинаПрофи (522) 1 год назад
коменты закончились на том аккаунте. Это по сути все? ну по части соединения фильмов и киностудий?
Jurijus Zaksas Искусственный Интеллект (445772) Да, после этого действуй пошагово, как я сказал выше, и все должно получиться.
Анастасия МишинаПрофи (522) 1 год назад
СПАСИБО ВАМ ОГРОМНОЕ ВЫ МЕНЯ ООООЧЕНЬ ВЫРУЧИЛИ!!!! У МЕНЯ ПРОСТО ЗАВТРА ПЕРЕСДАЧА ВОТ) ЕЩЕ РАЗ СПАСИБО ОТ ДУШИ!!!!!!!!!!!!!!
Анастасия МишинаПрофи (522) 1 год назад
у меня последний вопросик. вот там написано "при условии.что киностудия сняла более 20 фильмов." какая из киностудий? или имелось ввиду в сумме 20 фильмов всех киностудий?
Гуру Знаток (352) 1 год назад
Для решения задачи необходимо добавить столбец в таблицу KINO, который будет содержать информацию о количестве снятых фильмов. Допустим, мы добавили такой столбец и заполнили его значениями.

CREATE TABLE KINO
(
K_ID INT PRIMARY KEY IDENTITY(1,1),
K_NAME VARCHAR(50),
ID INT REFERENCES COUNTRY (ID),
FILM_COUNT INT DEFAULT 0 NOT NULL
)

Далее, можно использовать следующий запрос:

SELECT C.COUNTRY _NAME, K.K_NAME, SUM(F.COST) AS TOTAL_BUDGET
FROM COUNTRY C
INNER JOIN KINO K ON C.ID = K.ID
INNER JOIN FILM_IN_INDUSTRY FII ON K.K_ID = FII.K_ID
INNER JOIN FILM F ON FII.FILM _ID = F.FILM _ID
WHERE C.COUNTRY _NAME IN ('Россия', 'США', 'Франция') AND K.FILM _COUNT > 20
GROUP BY C.COUNTRY _NAME, K.K_NAME
ORDER BY TOTAL_BUDGET DESC

Этот запрос выбирает название страны, название киностудии и суммарный бюджет всех фильмов для киностудий, принадлежащих США, Франции и России, при условии, что киностудия сняла более 20 фильмов. Результаты группируются по названию страны и названию киностудии, а затем сортируются по убыванию суммарного бюджета.
Анастасия МишинаПрофи (522) 1 год назад
СПАСИИИИБОООО,Я ДУМАЛА НАСЧЕТ ДЖОИНВ НО НЕ БЫЛА УВЕРЕНА
Анастасия МишинаПрофи (522) 1 год назад
но все равно выдал пустую таблицу
Похожие вопросы