игра брюс 2048
Главная / Базы данных / Основы SQL / Тест 7

Основы SQL - тест 7

Упражнение 1:
Номер 1

Даны таблицы

CREATE TABLE Автор (Код_Автора INT , Фамилия VARCHAR(50) NULL, Имя VARCHAR(50) NULL, Отчество VARCHAR(50) NULL, Пол VARCHAR(50) NOT NULL , Дата_рождения DATETIME , Телефон CHAR(9)) CREATE TABLE Книга ( Код_Книги INT, Название VARCHAR(50) NOT NULL, Цена MONEY, Тематика VARCHAR(50) NOT NULL, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL, Количество INT)

Определить автора самой дорогой книги.


Ответ:

 (1) SELECT Автор.Фамилия, Книга.Цена FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Цена=(SELECT Max(Книга.Цена) FROM Книга) 

 (2) SELECT Автор.Фамилия, Книга.Цена FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Цена>=ALL(SELECT Книга.Цена FROM Книга) 

 (3) SELECT Автор.Фамилия, Книга.Цена FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Цена= Max(Книга.Цена) 

 (4) SELECT Автор.Фамилия, Книга.Цена FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Цена=MAX(SELECT Книга.Цена FROM Книга) 


Номер 2

Даны таблицы

CREATE TABLE Рейс (Номер_рейса INT, Конечный_пункт VARCHAR(30), Дата_вылета DATETIME, Продолжительность_маршрута INT, Число_билетов INT, Стоимость MONEY) CREATE TABLE БИЛЕТ (Номер_места CHAR(3), Номер_рейса INT, Дата_продажи DATETIME, Стоимость MONEY, Фамилия_пассажира VARCHAR(20))

Определить список пассажиров, покупающих билеты на самые дальние рейсы.


Ответ:

 (1) SELECT Билет.Фамилия_пассажира, Рейс.Продолжительность_маршрута FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса WHERE Рейс.Продолжительность_маршрута= (SELECT Max(Рейс.Продолжительность_маршрута) FROM Рейс) 

 (2) SELECT Билет.Фамилия_пассажира, Рейс.Продолжительность_маршрута FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса WHERE Рейс.Продолжительность_маршрута= MAX(Рейс.Продолжительность_маршрута) 

 (3) SELECT Билет.Фамилия_пассажира, Рейс.Продолжительность_маршрута FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса WHERE Рейс.Продолжительность_маршрута= MAX(SELECT Рейс.Продолжительность_маршрута FROM Рейс) 

 (4) SELECT Билет.Фамилия_пассажира, Рейс.Продолжительность_маршрута FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса WHERE Рейс.Продолжительность_маршрута>= ALL(SELECT Рейс.Продолжительность_маршрута FROM Рейс) 


Номер 3

Даны таблицы

CREATE TABLE Блюдо (Название_блюда VARCHAR(20) NOT NULL, Время_приготовления INT NOT NULL, Общая_калорийность INT NOT NULL, Номер_рецепта INT, Повар VARCHAR(20), Стоимость MONEY ) CREATE TABLE Компонент (Название_компонента VARCHAR(20), Калорийность INT NOT NULL, Вес FLOAT, Белки INT, Блюдо VARCHAR(20), Углеводы INT, Стоимость MONEY NOT NULL)

Определить блюдо, которое можно приготовить быстрее всех остальных блюд.


Ответ:

 (1) SELECT Блюдо.Название_блюда, Блюдо.Время_приготовления FROM Блюдо WHERE Блюдо.Время_приготовления= (SELECT Min(Блюдо.Время_приготовления) FROM Блюдо) 

 (2) SELECT Блюдо.Название_блюда, Блюдо.Время_приготовления FROM Блюдо WHERE Блюдо.Время_приготовления<= ALL(SELECT Блюдо.Время_приготовления FROM Блюдо) 

 (3) SELECT Блюдо.Название_блюда, Блюдо.Время_приготовления FROM Блюдо WHERE Блюдо.Время_приготовления= Min(Блюдо.Время_приготовления) 

 (4) SELECT Блюдо.Название_блюда, Блюдо.Время_приготовления FROM Блюдо WHERE Блюдо.Время_приготовления= Min (SELECT Блюдо.Время_приготовления) FROM Блюдо) 


Номер 4

Даны таблицы

CREATE TABLE Город ( Код_Города INT , Название VARCHAR(20) NOT NULL, Тариф MONEY, Регион VARCHAR(20)) CREATE TABLE Разговор (Код_Разговора INT, Код_Города INT NOT NULL, Фамилия IVARCHAR(20), Дата DATETIME NOT NULL, Продолжительность INT NOT NULL)

Вывести список городов, телефонные тарифы которых выше среднего.


Ответ:

 (1) SELECT Город.Название FROM Город WHERE Город.Тариф>(SELECT Avg(Город.Тариф) FROM Город) 

 (2) SELECT Город.Название FROM Город WHERE Город.Тариф>(Avg(Город.Тариф)) 

 (3) SELECT Город.Название FROM Город WHERE Город.Тариф>SOME(SELECT Avg(Город.Тариф) FROM Город) 

 (4) SELECT Город.Название FROM Город WHERE Город.Тариф> Avg (SELECT Город.Тариф FROM Город) 


Упражнение 2:
Номер 1

Даны таблицы

CREATE TABLE Автор (Код_Автора INT , Фамилия VARCHAR(50) NULL, Имя VARCHAR(50) NULL, Отчество VARCHAR(50) NULL, Пол VARCHAR(50) NOT NULL , Дата_рождения DATETIME , Телефон CHAR(9)) CREATE TABLE Книга ( Код_Книги INT, Название VARCHAR(50) NOT NULL, Цена MONEY, Тематика VARCHAR(50) NOT NULL, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL, Количество INT)

Определить авторов, не печатающих свои книги в издательстве «АСТ».


Ответ:

 (1) SELECT Автор.Фамилия, Автор.Код_Автора FROM Автор WHERE Автор.Код_Автора NOT IN (SELECT Книга.Код_Автора FROM Книга WHERE Книга.Издательство='АСТ') 

 (2) SELECT Автор.Фамилия, Автор.Код_Автора FROM Автор,Книга WHERE Книга.Издательство<>'АСТ' 

 (3) SELECT Автор.Фамилия, Автор.Код_Автора FROM Автор, Книга WHERE Автор.Код_Автора=Книга.Код_Автора AND Книга.Издательство='АСТ' 

 (4) SELECT Автор.Фамилия, Автор.Код_Автора FROM Автор WHERE NOT EXISTS (SELECT Книга.Код_Автора FROM Книга WHERE Книга.Издательство='АСТ') 


Номер 2

Даны таблицы

CREATE TABLE Рейс (Номер_рейса INT, Конечный_пункт VARCHAR(30), Дата_вылета DATETIME, Продолжительность_маршрута INT, Число_билетов INT, Стоимость MONEY) CREATE TABLE БИЛЕТ (Номер_места CHAR(3), Номер_рейса CHAR(6), Дата_продажи DATETIME, Стоимость MONEY, Фамилия_пассажира VARCHAR(20))

Вывести список пассажиров, не летающих в Самару.


Ответ:

 (1) SELECT DISTINCT Билет.Фамилия_пассажира FROM Билет WHERE Билет.Фамилия_пассажира NOT IN (SELECT Билет.Фамилия_пассажира FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса WHERE Рейс.Конечный_пункт="Самара") 

 (2) SELECT DISTINCT Билет.Фамилия_пассажира FROM Билет, Рейс WHERE Рейс.Конечный_пункт<>"Самара" 

 (3) SELECT DISTINCT Билет.Фамилия_пассажира FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса WHERE Рейс.Конечный_пункт<>"Самара" 

 (4) SELECT DISTINCT Билет.Фамилия_пассажира FROM Билет WHERE NOT EXISTS (SELECT Билет.Фамилия_пассажира FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса WHERE Рейс.Конечный_пункт="Самара") 


Номер 3

Даны таблицы

CREATE TABLE Блюдо (Название_блюда VARCHAR(20) NOT NULL, Тип_блюда VARCHAR(20) NOT NULL, Время_приготовления INT NOT NULL, Общая_калорийность INT NOT NULL, Номер_рецепта INT, Повар VARCHAR(20), Стоимость MONEY ) CREATE TABLE Компонент (Название_компонента VARCHAR(20), Калорийность INT NOT NULL, Вес FLOAT, Белки INT, Блюдо VARCHAR(20), Углеводы INT, Стоимость MONEY NOT NULL)

Определить, кто из поваров не готовит десерт.


Ответ:

 (1) SELECT DISTINCT Блюдо.Повар FROM Блюдо WHERE Блюдо.Повар NOT IN (SELECT Блюдо.Повар FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт")  

 (2) SELECT DISTINCT Блюдо.Повар FROM Блюдо WHERE Блюдо.Тип_блюда<>"Десерт" 

 (3) SELECT DISTINCT Блюдо.Повар FROM Блюдо WHERE NOT EXISTS (SELECT Блюдо.Повар FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт") 

 (4) SELECT DISTINCT Блюдо.Повар FROM Блюдо WHERE Блюдо.Повар<> ALL (SELECT Блюдо.Повар FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт") 


Номер 4

Даны таблицы

CREATE TABLE Город (Код_Города INT , Название VARCHAR(20) NOT NULL, Тариф MONEY, Регион VARCHAR(20)) CREATE TABLE Разговор (Код_Разговора INT , Код_Города INT NOT NULL, Фамилия IVARCHAR(20), Дата DATETIME NOT NULL, Продолжительность INT NOT NULL)

Перечислить фамилии людей, которые не говорили с абонентами из Москвы.


Ответ:

 (1) SELECT DISTINCT Разговор.Фамилия FROM Разговор WHERE Разговор.Фамилия NOT IN (SELECT Разговор.Фамилия FROM Разговор INNER JOIN Город ON Разговор.Код_Города = Город.Код_Города WHERE Город.Название="Москва") 

 (2) SELECT DISTINCT Разговор.Фамилия FROM Разговор,Город WHERE Разговор.Код_Города = Город.Код_Города AND Город.Название<>"Москва" 

 (3) SELECT DISTINCT Разговор.Фамилия FROM Разговор INNER JOIN Город ON Разговор.Код_Города = Город.Код_Города WHERE Город.Название<>"Москва" 

 (4) SELECT DISTINCT Разговор.Фамилия FROM Разговор WHERE NOT EXISTS (SELECT Разговор.Фамилия FROM Разговор INNER JOIN Город ON Разговор.Код_Города = Город.Код_Города WHERE Город.Название="Москва") 


Упражнение 3:
Номер 1

Даны таблицы

CREATE TABLE Автор (Код_Автора INT , Фамилия VARCHAR(50) NULL, Имя VARCHAR(50) NULL, Отчество VARCHAR(50) NULL, Пол VARCHAR(50) NOT NULL , Дата_рождения DATETIME , Телефон CHAR(9)) CREATE TABLE Книга ( Код_Книги INT, Название VARCHAR(50) NOT NULL, Цена MONEY, Тематика VARCHAR(50) NOT NULL, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL, Количество INT)

Определить авторов, написавших наибольшее количество книг.


Ответ:

 (1) SELECT Автор.Фамилия FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора GROUP BY Автор.Фамилия HAVING Count(Книга.Название)>= All (SELECT Count(Книга.Название) FROM Книга GROUP BY Книга.Код_Автора) 

 (2) SELECT Автор.Фамилия FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора GROUP BY Автор.Фамилия HAVING Count(Книга.Название)=MAX (SELECT Count(Книга.Название) FROM Книга GROUP BY Книга.Код_Автора) 

 (3) SELECT Автор.Фамилия FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора GROUP BY Автор.Фамилия HAVING Count(Книга.Название)>=All (SELECT Count(Книга.Название) FROM Книга) 

 (4) SELECT Автор.Фамилия FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Count(Книга.Название)>=All (SELECT Count(Книга.Название) FROM Книга) 


Номер 2

Даны таблицы

CREATE TABLE Рейс (Номер_рейса INT, Конечный_пункт VARCHAR(30), Дата_вылета DATETIME, Продолжительность_маршрута INT, Стоимость MONEY, Число_билетов INT) CREATE TABLE БИЛЕТ (Номер_места CHAR(3), Номер_рейса INT, Дата_продажи DATETIME, Стоимость MONEY, Фамилия_пассажира VARCHAR(20))

Определить, кто из пассажиров потратил наибольшую сумму на покупку авиабилетов.


Ответ:

 (1) SELECT Билет.Фамилия_пассажира, Sum(Рейс.Стоимость) AS Sum_Стоимость FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса GROUP BY Билет.Фамилия_пассажира HAVING Sum(Рейс.Стоимость)>= ALL(SELECT Sum(Рейс.Стоимость) FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса GROUP BY Билет.Фамилия_пассажира) 

 (2) SELECT Билет.Фамилия_пассажира, Sum(Рейс.Стоимость) AS Sum_Стоимость FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса GROUP BY Билет.Фамилия_пассажира HAVING Sum(Рейс.Стоимость)= MAX(SELECT Sum(Рейс.Стоимость) FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса GROUP BY Билет.Фамилия_пассажира) 

 (3) SELECT Билет.Фамилия_пассажира, Sum(Рейс.Стоимость) AS Sum_Стоимость FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса GROUP BY Билет.Фамилия_пассажира HAVING Sum(Рейс.Стоимость)>= ALL(SELECT Sum(Рейс.Стоимость) FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса) 

 (4) SELECT Билет.Фамилия_пассажира, Sum(Рейс.Стоимость) AS Sum_Стоимость FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Sum(Рейс.Стоимость)>= ALL(SELECT Sum(Рейс.Стоимость) FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса) 


Номер 3

Даны таблицы

CREATE TABLE Блюдо (Название_блюда VARCHAR(20) NOT NULL, Время_приготовления INT NOT NULL, Номер_рецепта INT, Повар VARCHAR(20), Стоимость MONEY ) CREATE TABLE Компонент (Название_компонента VARCHAR(20), Калорийность INT NOT NULL, Вес FLOAT, Белки INT, Блюдо VARCHAR(20), Углеводы INT, Стоимость MONEY NOT NULL)

Определить самое калорийное блюдо.


Ответ:

 (1) SELECT Компонент.Блюдо, Sum(Компонент.Калорийность*Компонент.Вес) AS Общ_калорийность FROM Компонент GROUP BY Компонент.Блюдо HAVING Sum(Компонент.Калорийность*Компонент.Вес)>= ALL(SELECT Sum(Компонент.Калорийность*Компонент.Вес) FROM Компонент GROUP BY Компонент.Блюдо) 

 (2) SELECT Компонент.Блюдо, Sum(Компонент.Калорийность*Компонент.Вес) AS Общ_калорийность FROM Компонент GROUP BY Компонент.Блюдо HAVING Sum(Компонент.Калорийность*Компонент.Вес)= MAX(SELECT Sum(Компонент.Калорийность*Компонент.Вес) FROM Компонент GROUP BY Компонент.Блюдо) 

 (3) SELECT Компонент.Блюдо, Sum(Компонент.Калорийность*Компонент.Вес) AS Общ_калорийность FROM Компонент GROUP BY Компонент.Блюдо HAVING Sum(Компонент.Калорийность*Компонент.Вес)>= ALL(SELECT Sum(Компонент.Калорийность*Компонент.Вес) FROM Компонент) 

 (4) SELECT Компонент.Блюдо, Sum(Компонент.Калорийность*Компонент.Вес) AS Общ_калорийность FROM Компонент WHERE Sum(Компонент.Калорийность*Компонент.Вес)>= ALL(SELECT Sum(Компонент.Калорийность*Компонент.Вес) FROM Компонент) 


Номер 4

Даны таблицы

CREATE TABLE Город ( Код_Города INT , Название VARCHAR(20) NOT NULL, Тариф MONEY, Регион VARCHAR(20)) CREATE TABLE Разговор (Код_Разговора INT , Код_Города INT NOT NULL, Фамилия IVARCHAR(20), Дата DATETIME NOT NULL, Продолжительность INT NOT NULL)

Определить тех абонентов, которые заплатили за телефонные разговоры больше, чем другие.


Ответ:

 (1) SELECT Разговор.Фамилия, Sum(Город.Тариф*Разговор.Продолжительность) AS Стоимость FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города GROUP BY Разговор.Фамилия HAVING Sum( Город.Тариф*Разговор.Продолжительность)>= ALL(SELECT Sum(Город.Тариф*Разговор.Продолжительность) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города GROUP BY Разговор.Фамилия) 

 (2) SELECT Разговор.Фамилия, Sum(Город.Тариф*Разговор.Продолжительность) AS Стоимость FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города GROUP BY Разговор.Фамилия HAVING Sum( Город.Тариф*Разговор.Продолжительность)= MAX(SELECT Sum(Город.Тариф*Разговор.Продолжительность) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города GROUP BY Разговор.Фамилия) 

 (3) SELECT Разговор.Фамилия, Sum(Город.Тариф*Разговор.Продолжительность) AS Стоимость FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города GROUP BY Разговор.Фамилия HAVING Sum( Город.Тариф*Разговор.Продолжительность)<= ALL(SELECT Sum(Город.Тариф*Разговор.Продолжительность) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города) 

 (4) SELECT Разговор.Фамилия, Sum(Город.Тариф*Разговор.Продолжительность) AS Стоимость FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Sum( Город.Тариф*Разговор.Продолжительность)>= ALL(SELECT Sum(Город.Тариф*Разговор.Продолжительность) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города) 


Упражнение 4:
Номер 1

Даны таблицы

CREATE TABLE Автор (Код_Автора INT , Фамилия VARCHAR(50) NULL, Имя VARCHAR(50) NULL, Отчество VARCHAR(50) NULL, Пол VARCHAR(50) NOT NULL , Дата_рождения DATETIME , Телефон CHAR(9)) CREATE TABLE Книга ( Код_Книги INT, Название VARCHAR(50) NOT NULL, Цена MONEY, Тематика VARCHAR(50) NOT NULL, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL, Количество INT)

Определить авторов, общая стоимость книг которых, выпущенных издательством «Мир», составила наименьшую сумму.


Ответ:

 (1) SELECT Автор.Фамилия, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Издательство="Мир" GROUP BY Автор.Фамилия HAVING Sum(Книга.Цена*Книга.Количество)<= All (SELECT Sum(Книга.Цена*Книга.Количество) FROM Книга WHERE Книга.Издательство="Мир" GROUP BY Книга.Код_Автора)  

 (2) SELECT Автор.Фамилия, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Издательство="Мир" GROUP BY Автор.Фамилия HAVING Sum(Книга.Цена*Книга.Количество)= MIN(SELECT Sum(Книга.Цена*Книга.Количество) FROM Книга WHERE Книга.Издательство="Мир" GROUP BY Книга.Код_Автора)  

 (3) SELECT Автор.Фамилия, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Издательство="Мир" HAVING Sum(Книга.Цена*Книга.Количество)<= All (SELECT Sum(Книга.Цена*Книга.Количество) FROM Книга WHERE Книга.Издательство="Мир")  

 (4) SELECT Автор.Фамилия, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Издательство="Мир" AND Sum(Книга.Цена*Книга.Количество)<= All (SELECT Sum(Книга.Цена*Книга.Количество) FROM Книга WHERE Книга.Издательство="Мир" )  


Номер 2

Даны таблицы

CREATE TABLE Рейс (Номер_рейса INT, Конечный_пункт VARCHAR(30), Дата_вылета DATETIME, Продолжительность_маршрута INT, Число_билетов INT, Стоимость MONEY) CREATE TABLE БИЛЕТ (Номер_места CHAR(3), Номер_рейса CHAR(6), Дата_продажи DATETIME, Стоимость MONEY, Фамилия_пассажира VARCHAR(20))

Определить пассажиров, реже других летающих в Москву.


Ответ:

 (1) SELECT Билет.Фамилия_пассажира, Count(Рейс.Номер_рейса) AS Кол_рейсов FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Рейс.Конечный_пункт="Москва" GROUP BY Билет.Фамилия_пассажира HAVING Count(Рейс.Номер_рейса)<= ALL(SELECT Count(Рейс.Конечный_пункт) FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Рейс.Конечный_пункт="Москва" GROUP BY Билет.Фамилия_пассажира) 

 (2) SELECT Билет.Фамилия_пассажира, Count(Рейс.Номер_рейса) AS Кол_рейсов FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Рейс.Конечный_пункт="Москва" GROUP BY Билет.Фамилия_пассажира HAVING Count(Рейс.Номер_рейса)<= MIN(SELECT Count(Рейс.Конечный_пункт) FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Рейс.Конечный_пункт="Москва" GROUP BY Билет.Фамилия_пассажира) 

 (3) SELECT Билет.Фамилия_пассажира, Count(Рейс.Номер_рейса) AS Кол_рейсов FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Рейс.Конечный_пункт="Москва" HAVING Count(Рейс.Номер_рейса)<= ALL(SELECT Count(Рейс.Конечный_пункт) FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Рейс.Конечный_пункт="Москва") 

 (4) SELECT Билет.Фамилия_пассажира, Count(Рейс.Номер_рейса) AS Кол_рейсов FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Рейс.Конечный_пункт="Москва" AND Count(Рейс.Номер_рейса)<= ALL(SELECT Count(Рейс.Конечный_пункт) FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса WHERE Рейс.Конечный_пункт="Москва") 


Номер 3

Даны таблицы

CREATE TABLE Блюдо (Название_блюда VARCHAR(20) NOT NULL, Тип_блюда VARCHAR(20) NOT NULL, Время_приготовления INT NOT NULL, Общая_калорийность INT NOT NULL, Номер_рецепта INT, Повар VARCHAR(20), Стоимость MONEY ) CREATE TABLE Компонент (Название_компонента VARCHAR(20), Калорийность INT NOT NULL, Вес FLOAT, Белки INT, Блюдо VARCHAR(20), Углеводы INT, Стоимость MONEY NOT NULL)

Определить поваров, которые готовят десерты чаще, чем другие.


Ответ:

 (1) SELECT Блюдо.Повар, Count(Блюдо.Название_блюда) AS Кол_блюд FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт" GROUP BY Блюдо.Повар HAVING Count(Блюдо.Название_блюда)>= ALL(SELECT Count(Блюдо.Название_блюда) FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт" GROUP BY Блюдо.Повар) 

 (2) SELECT Блюдо.Повар, Count(Блюдо.Название_блюда) AS Кол_блюд FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт" GROUP BY Блюдо.Повар HAVING Count(Блюдо.Название_блюда)>= MAX(SELECT Count(Блюдо.Название_блюда) FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт" GROUP BY Блюдо.Повар) 

 (3) SELECT Блюдо.Повар, Count(Блюдо.Название_блюда) AS Кол_блюд FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт" HAVING Count(Блюдо.Название_блюда)>= ALL(SELECT Count(Блюдо.Название_блюда) FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт") 

 (4) SELECT Блюдо.Повар, Count(Блюдо.Название_блюда) AS Кол_блюд FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт" AND Count(Блюдо.Название_блюда)>= ALL(SELECT Count(Блюдо.Название_блюда) FROM Блюдо WHERE Блюдо.Тип_блюда="Десерт") 


Номер 4

Даны таблицы

CREATE TABLE Город ( Код_Города INT , Название VARCHAR(20) NOT NULL, Тариф MONEY, Регион VARCHAR(20)) CREATE TABLE Разговор (Код_Разговора INT , Код_Города INT NOT NULL, Фамилия IVARCHAR(20), Дата DATETIME NOT NULL, Продолжительность INT NOT NULL)

Определить город Поволжья, переговоры с которым ведутся наиболее часто.


Ответ:

 (1) SELECT Город.Название, Count(Разговор.Код_Разговора) AS Кол_разговоров FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион="Поволжье" GROUP BY Город.Название HAVING Count(Разговор.Код_Разговора)>= ALL(SELECT Count(Разговор.Код_Разговора) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион="Поволжье" GROUP BY Город.Название) 

 (2) SELECT Город.Название, Count(Разговор.Код_Разговора) AS Кол_разговоров FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион="Поволжье" GROUP BY Город.Название HAVING Count(Разговор.Код_Разговора)>= MAX(SELECT Count(Разговор.Код_Разговора) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион="Поволжье" GROUP BY Город.Название) 

 (3) SELECT Город.Название, Count(Разговор.Код_Разговора) AS Кол_разговоров FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион="Поволжье" HAVING Count(Разговор.Код_Разговора)>= ALL(SELECT Count(Разговор.Код_Разговора) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион="Поволжье") 

 (4) SELECT Город.Название, Count(Разговор.Код_Разговора) AS Кол_разговоров FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион="Поволжье" AND Count(Разговор.Код_Разговора)>= ALL(SELECT Count(Разговор.Код_Разговора) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион="Поволжье" GROUP BY Город.Название) 


Упражнение 5:
Номер 1

Даны таблицы Автор и Книга.

CREATE TABLE Автор ( Код_Автора INT , Фамилия VARCHAR(50)) CREATE TABLE Книга ( Код_Книги INT, Название VARCHAR(50) NOT NULL, Цена MONEY, Издательство VARCHAR(50) NOT NULL, Код_Автора INT NOT NULL, Количество INT)

Определить авторов, чьи какие-либо книги проданы в наименьшем количестве.


Ответ:

 (1) SELECT Автор.Фамилия, Книга.Количество FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Количество= (SELECT Min(Книга.Количество) FROM Книга) 

 (2) SELECT Автор.Фамилия, Книга.Количество FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Количество <= ALL(SELECT Книга.Количество FROM Книга) 

 (3) SELECT Автор.Фамилия, Книга.Количество FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Количество = Min(Книга. Количество) 

 (4) SELECT Автор.Фамилия, Книга. Количество FROM Книга INNER JOIN Автор ON Книга.Код_Автора = Автор.Код_Автора WHERE Книга.Количество = Min(SELECT Книга.Количество FROM Книга) 


Номер 2

Даны таблицы Рейс и Билет.

CREATE TABLE Рейс (Номер_рейса INT, Конечный_пункт VARCHAR(30), Продолжительность_маршрута INT) CREATE TABLE БИЛЕТ (Номер_места CHAR(3), Номер_рейса CHAR(6), Фамилия_пассажира VARCHAR(20))

Определить самый продолжительный рейс.


Ответ:

 (1) SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрута FROM Рейс WHERE Рейс.Продолжительность_маршрута=    (SELECT Max(Рейс.Продолжительность_маршрута)       FROM Рейс) 

 (2) SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрута FROM Рейс WHERE Рейс.Продолжительность_маршрута=    Max(Рейс.Продолжительность_маршрута) 

 (3) SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрута FROM Рейс WHERE Рейс.Продолжительность_маршрута=    (Max(SELECT Рейс.Продолжительность_маршрута     FROM Рейс)) 

 (4) SELECT Рейс.Номер_рейса, Рейс.Конечный_пункт, Рейс.Продолжительность_маршрута FROM Рейс WHERE Рейс.Продолжительность_маршрута>=ALL    (SELECT Рейс.Продолжительность_маршрута    FROM Рейс) 


Номер 3

Даны таблицы Город и Разговор.

CREATE TABLE Город ( Код_Города INT, Название VARCHAR(20), Тариф MONEY, Регион VARCHAR(20)) CREATE TABLE Разговор (Код_Разговора INT , Код_Города INT NOT NULL, Фамилия VARCHAR(20), Дата DATETIME, Продолжительность INT NOT NULL)

Вывести список регионов, где средние тарифы на телефонные разговоры выше, чем в других регионах.


Ответ:

 (1) SELECT Город.Регион, Avg(Город.Тариф) FROM Город GROUP BY Город.Регион HAVING Avg(Город.Тариф)>=ALL    (SELECT Avg(Город.Тариф)    FROM Город    GROUP BY Город.Регион) 

 (2) SELECT Город.Регион, Avg(Город.Тариф) FROM Город GROUP BY Город.Регион HAVING Avg(Город.Тариф)>=ALL    (SELECT Avg(Город.Тариф), Город.Регион    FROM Город    GROUP BY Город.Регион) 

 (3) SELECT Город.Регион, Avg(Город.Тариф) FROM Город GROUP BY Город.Регион HAVING Avg(Город.Тариф)>=Avg(SELECT Город.Тариф)       FROM Город       GROUP BY Город.Регион) 

 (4) SELECT Город.Регион, Avg(Город.Тариф) FROM Город GROUP BY Город.Регион HAVING Avg(Город.Тариф)>=Avg(Город.Тариф) 


Упражнение 6:
Номер 1

Определить издательства, выручившие от продажи книг наименьшую сумму.


Ответ:

 (1) SELECT Книга.Издательство, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга GROUP BY Книга.Издательство HAVING Sum(Книга.Цена*Книга.Количество)<=ALL(       SELECT Sum(Книга.Цена*Книга.Количество)       FROM Книга       GROUP BY Книга.Издательство) 

 (2) SELECT Книга.Издательство, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга HAVING Sum(Книга.Цена*Книга.Количество)<=ALL(       SELECT Sum(Книга.Цена*Книга.Количество)       FROM Книга       GROUP BY Книга.Издательство) 

 (3) SELECT Книга.Издательство, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга GROUP BY Книга.Издательство WHERE Sum(Книга.Цена*Книга.Количество)<=ALL(       SELECT Sum(Книга.Цена*Книга.Количество)       FROM Книга       GROUP BY Книга.Издательство) 

 (4) SELECT Книга.Издательство, Sum(Книга.Цена*Книга.Количество) AS Стоимость FROM Книга GROUP BY Книга.Издательство HAVING Sum(Книга.Цена*Книга.Количество)<=ALL( Sum(Книга.Цена*Книга.Количество)       FROM Книга       GROUP BY Книга.Издательство) 


Номер 2

Определить конечный пункт, в который вылетело наименьшее число пассажиров.


Ответ:

 (1) SELECT Рейс.Конечный_пункт, Count(Билет.Фамилия_пассажира) FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса GROUP BY Рейс.Конечный_пункт HAVING Count(Билет.Фамилия_пассажира)<=All       (SELECT Count(Билет.Фамилия_пассажира)       FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса       GROUP BY Рейс.Конечный_пункт) 

 (2) SELECT Рейс.Конечный_пункт, Count(Билет.Фамилия_пассажира) FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса GROUP BY Рейс.Конечный_пункт HAVING Count(Билет.Фамилия_пассажира)<=(SELECT       Count(Билет.Фамилия_пассажира)       FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса       GROUP BY Рейс.Конечный_пункт) 

 (3) SELECT Рейс.Конечный_пункт, Count(Билет.Фамилия_пассажира) FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса GROUP BY Рейс.Конечный_пункт HAVING Count(Билет.Фамилия_пассажира)=MIN       (SELECT Count(Билет.Фамилия_пассажира)       FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса       GROUP BY Рейс.Конечный_пункт) 

 (4) SELECT Рейс.Конечный_пункт, Count(Билет.Фамилия_пассажира) FROM Рейс INNER JOIN Билет ON Рейс.Номер_рейса = Билет.Номер_рейса GROUP BY Рейс.Конечный_пункт WHERE Count(Билет.Фамилия_пассажира)<=All       (SELECT Count(Билет.Фамилия_пассажира)       FROM Билет INNER JOIN Рейс ON Билет.Номер_рейса = Рейс.Номер_рейса       GROUP BY Рейс.Конечный_пункт) 


Номер 3

Определить город Поволжья, с которым дольше других ведутся телефонные разговоры.


Ответ:

 (1) SELECT Город.Название, Sum(Разговор.Продолжительность) FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион='Поволжье' GROUP BY Город.Название HAVING Sum(Разговор.Продолжительность)>=All       (SELECT Sum(Разговор.Продолжительность)       FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города       WHERE Город.Регион='Поволжье'       GROUP BY Город.Название) 

 (2) SELECT Город.Название, Sum(Разговор.Продолжительность) AS Кол_разговоров FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион='Поволжье' GROUP BY Город.Название HAVING Count(Разговор.Продолжительность)>=MAX       (SELECT Sum(Разговор.Продолжительность)       FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города       WHERE Город.Регион='Поволжье'       GROUP BY Город.Название) 

 (3) SELECT Город.Название, Sum(Разговор. Продолжительность) AS Кол_разговоров FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион='Поволжье' HAVING Sum(Разговор.Код_Разговора)>=ALL       (SELECT Sum(Разговор.Продолжительность)       FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города       WHERE Город.Регион='Поволжье') 

 (4) SELECT Город.Название, Sum(Разговор. Продолжительность) AS Кол_разговоров FROM Город INNER JOIN Разговор ON Город.Код_Города = Разговор.Код_Города WHERE Город.Регион='Поволжье' AND Sum(Разговор.Продолжительность)>=ALL       (SELECT Sum(Разговор.Продолжительность)       FROM Город INNER JOIN Разговор       ON Город.Код_Города = Разговор.Код_Города       WHERE Город.Регион='Поволжье'       GROUP BY Город.Название) 




Главная / Базы данных / Основы SQL / Тест 7