Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

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

Написать команду SELECT для реализации следующего запроса: выдать
название страны, название киностудии и суммарный объем денежных
средств, затраченных на съемки всех фильмов для киностудий,
принадлежащих странам США, Франция и Россия, при условии, что
киностудия сняла более 20 фильмов. Отсортировать по суммарному
бюджету по убыванию.
Я не могу понять эту часть название киностудии и суммарный объем денежных
средств, затраченных на съемки всех фильмов для киностудий,
принадлежащих странам США, Франция и Россия, при условии, что
киностудия сняла более 20 фильмов

Дополнен

чья именно киностудия сняла больше 20 фильмов?

Дополнен

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)
)

Дополнен

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);

Дополнен

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

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект

>Я не могу понять эту часть название киностудии и суммарный объем денежных
средств
Загугли групповые функции COUNT и SUM и группировку данных, а также групповой фильтр HAVING.

Аватар пользователя
Знаток

Для решения задачи необходимо добавить столбец в таблицу 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 фильмов. Результаты группируются по названию страны и названию киностудии, а затем сортируются по убыванию суммарного бюджета.