Skip to content

Latest commit

 

History

History
702 lines (646 loc) · 90.5 KB

README.md

File metadata and controls

702 lines (646 loc) · 90.5 KB

Solving_SQL_ACADEMY

Ссылка на задания из тренажера

Содержание

Тренажер

Задание 1

Вывести имена всех людей, которые есть в базе данных авиакомпаний

 SELECT name FROM Passenger
Показать результат запроса:
name
1Bruce Willis
2George Clooney
3Kevin Costner
4Donald Sutherland
5Jennifer Lopez
6Ray Liotta
7Samuel L. Jackson
8Nikole Kidman
9Alan Rickman
10Kurt Russell
11Harrison Ford
12Russell Crowe
13Steve Martin
14Michael Caine
15Angelina Jolie
16Mel Gibson
17Michael Douglas
18John Travolta
19Sylvester Stallone
20Tommy Lee Jones
21Catherine Zeta-Jones
22Antonio Banderas
23Kim Basinger
24Sam Neill
25Gary Oldman
26ClINT Eastwood
27Brad Pitt
28Johnny Depp
29Pierce Brosnan
30Sean Connery
31Bruce Willis
32Mullah Omar

Задание 2

Вывести названия всеx авиакомпаний

SELECT name FROM Company
Показать результат запроса:
name
1Don_avia
2Aeroflot
3Dale_avia
4air_France
5British_AW

Задание 3

Вывести все рейсы, совершенные из Москвы

SELECT * FROM Trip
WHERE town_from = "Moscow"
Показать результат запроса:
idcompanyplanetown_fromtown_totime_outtime_in
111452IL-86MoscowRostov1900-01-01T09:35:00.000Z1900-01-01T11:23:00.000Z
211821TU-134MoscowRostov1900-01-01T12:35:00.000Z1900-01-01T14:30:00.000Z
311881TU-134MoscowRostov1900-01-01T22:50:00.000Z1900-01-02T00:48:00.000Z
411961TU-154MoscowRostov1900-01-01T04:00:00.000Z1900-01-01T05:45:00.000Z

Задание 4

Вывести имена людей, которые заканчиваются на "man"

SELECT name 
FROM Passenger
WHERE name LIKE '%man'
Показать результат запроса:
name
1Nikole Kidman
2Alan Rickman
3Gary Oldman

Задание 5

Вывести количество рейсов, совершенных на TU-134

SELECT COUNT(*) as count
FROM Trip
WHERE plane LIKE 'TU-134'
Показать результат запроса:
count
14

Задание 6

Какие компании совершали перелеты на Boeing

SELECT comp.name
FROM Trip
	JOIN Company comp ON Trip.company = comp.id
WHERE Trip.plane = 'Boeing'
GROUP BY comp.name
Показать результат запроса:
name
1air_France
2British_AW

Задание 7

Вывести все названия самолётов, на которых можно улететь в Москву (Moscow)

SELECT DISTINCT Trip.plane
FROM Trip
WHERE town_to LIKE 'Moscow'
Показать результат запроса:
plane
1IL-86
2TU-134
3TU-154

Задание 8

В какие города можно улететь из Парижа (Paris) и сколько времени это займёт?

SELECT town_to,
	TIMEDIFF(time_in, time_out) as flight_time
FROM Trip
WHERE town_from = "Paris"
Показать результат запроса:
town_toflight_time
1Rostov03:33:00
2London01:00:00

Задание 9

Какие компании организуют перелеты из Владивостока (Vladivostok)?

SELECT DISTINCT company.name
FROM Trip
	JOIN Company ON Trip.company = Company.id
WHERE town_from = "Vladivostok"
Показать результат запроса:
name
1Dale_avia

Задание 10

Вывести вылеты, совершенные с 10 ч. по 14 ч. 1 января 1900 г.

SELECT *
FROM Trip
WHERE time_out BETWEEN '1900-01-01 10:00:00' AND '1900-01-01 14:00:00'
Показать результат запроса:
idcompanyplanetown_fromtown_totime_outtime_in
111821TU-134MoscowRostov1900-01-01T12:35:00.000Z1900-01-01T14:30:00.000Z
277725BoeingSingaporeLondon1900-01-01T12:00:00.000Z1900-01-02T02:00:00.000Z
377745BoeingSingaporeLondon1900-01-01T14:00:00.000Z1900-01-02T06:00:00.000Z

Задание 11

Выведите пассажиров с самым длинным ФИО. Пробелы, дефисы и точки считаются частью имени.

SELECT name
FROM passenger
ORDER BY LENGTH(name) DESC
LIMIT 0, 1
Показать результат запроса:
name
1Catherine Zeta-Jones

Задание 12

Вывести id и количество пассажиров для всех прошедших полётов

SELECT trip,
	COUNT(passenger) as count
FROM Pass_in_trip
GROUP BY trip
Показать результат запроса:
tripcount
111001
211233
311241
411452
511814
611822
711872
811881
988822
1077716
1177725
1288811
1377781
1477731

Задание 13

Вывести имена людей, у которых есть полный тёзка среди пассажиров

SELECT name
FROM Passenger
GROUP by name
HAVING COUNT(name) > 1
Показать результат запроса:
name
1Bruce Willis

Задание 14

В какие города летал Bruce Willis

SELECT DISTINCT town_to
FROM Trip
	JOIN Pass_in_trip pit ON pit.Trip = Trip.id
	JOIN Passenger pass ON pass.id = pit.passenger
WHERE name LIKE 'Bruce Willis'
Показать результат запроса:
town_to
1Paris
2Vladivostok
3Moscow

Задание 15

Выведите дату и время прилёта пассажира Стив Мартин (Steve Martin) в Лондон (London)

WITH Full_table AS (
	SELECT time_in
	FROM Trip
		JOIN Pass_in_trip pit ON pit.trip = Trip.id
		JOIN Passenger pass ON pass.id = pit.passenger
	WHERE name LIKE "Steve Martin"
		AND town_to LIKE "London"
)
SELECT *
FROM Full_table
Показать результат запроса:
time_in
11900-01-02T02:00:00.000Z

Задание 16

Вывести отсортированный по количеству перелетов (по убыванию) и имени (по возрастанию) список пассажиров, совершивших хотя бы 1 полет.

SELECT name, COUNT(*) as count
FROM Passenger
	JOIN Pass_in_trip ON Pass_in_trip.passenger = Passenger.id
GROUP BY name
HAVING COUNT(trip) > 0
ORDER BY COUNT(trip) DESC,
	name
Показать результат запроса:
namecount
1Michael Caine4
2Mullah Omar4
3Bruce Willis3
4Harrison Ford3
5Jennifer Lopez3
6Kurt Russell3
7Nikole Kidman3
8Kevin Costner2
9Ray Liotta2
10Steve Martin2
11Alan Rickman1
12George Clooney1
13Russell Crowe1

Задание 17

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

SELECT member_name,
	status,
	SUM(amount * unit_price) AS costs
FROM FamilyMembers
	JOIN Payments ON Payments.family_member = FamilyMembers.member_id
WHERE YEAR(date) = 2005
GROUP by member_name,
	status
Показать результат запроса:
member_namestatuscosts
1Headley Quinceyfather2474
2Flavia Quinceymother74194
3Andie Quinceyson3500
4Lela Quinceydaughter650
5Annie Quinceydaughter1060

Задание 18

Узнать, кто старше всех в семьe

SELECT member_name
FROM FamilyMembers
WHERE birthday = (
		SELECT MIN(birthday)
		FROM FamilyMembers
	)
Показать результат запроса:
member_name
1Headley Quincey

Задание 19

Определить, кто из членов семьи покупал картошку (potato)

SELECT DISTINCT status
FROM FamilyMembers fm
	JOIN Payments p ON fm.member_id = p.family_member
	JOIN Goods g ON g.good_id = p.good
WHERE good_name LIKE "potato"
Показать результат запроса:
status
1father
2mother

Задание 20

Сколько и кто из семьи потратил на развлечения (entertainment). Вывести статус в семье, имя, сумму

SELECT status,
	member_name,
	SUM(unit_price * amount) AS costs
FROM FamilyMembers
	JOIN Payments ON Payments.family_member = FamilyMembers.member_id
	JOIN Goods ON Goods.good_id = Payments.good
	JOIN GoodTypes ON Goods.type = GoodTypes.good_type_id
WHERE good_type_name = "entertainment"
GROUP BY status,
	member_name
Показать результат запроса:
statusmember_namecosts
1daughterAnnie Quincey100
2motherFlavia Quincey120
3sonAndie Quincey1200

Задание 21

Определить товары, которые покупали более 1 раза

SELECT good_name
FROM Goods
	JOIN Payments ON Payments.good = Goods.good_id
GROUP BY good
HAVING COUNT(*) > 1
Показать результат запроса:
good_name
1apartment fee
2red caviar
3cinema
4music school fee
5potato

Задание 22

Найти имена всех матерей (mother)

SELECT member_name
FROM FamilyMembers
WHERE status LIKE "mother"
Показать результат запроса:
member_name
1Flavia Quincey
2Constance Forrest

Задание 23

Найдите самый дорогой деликатес (delicacies) и выведите его цену

SELECT good_name,
	unit_price
FROM Goods
	JOIN Payments ON Payments.good = Goods.good_id
	JOIN GoodTypes ON GoodTypes.good_type_id = Goods.type
WHERE good_type_name = "delicacies"
ORDER BY unit_price DESC
LIMIT 1
Показать результат запроса:
good_nameunit_price
1red caviar350

Задание 24

Определить кто и сколько потратил в июне 2005

SELECT member_name,
	SUM(unit_price * amount) as costs
FROM FamilyMembers
	JOIN Payments ON Payments.family_member = FamilyMembers.member_id
WHERE MONTH(date) = 06
	AND YEAR(date) = 2005
GROUP BY member_name
Показать результат запроса:
member_namecosts
1Flavia Quincey450
2Headley Quincey300
3Andie Quincey1200

Задание 25

Определить, какие товары не покупались в 2005 году

SELECT good_name
FROM Goods
WHERE good_id NOT IN (
		SELECT good
		FROM Payments
		WHERE YEAR(date) = 2005
	)
Показать результат запроса:
good_name
1phone fee
2bread
3pineapples
4television
5vacuum cleaner

Задание 27

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

SELECT good_type_name,
	SUM(amount * unit_price) as costs
FROM Payments
	JOIN Goods ON Goods.good_id = Payments.good
	JOIN GoodTypes ON Goods.type = GoodTypes.good_type_id
WHERE YEAR(date) = 2005
GROUP BY good_type_name
Показать результат запроса:
good_type_namecosts
1communal payments4100
2food748
3delicacies650
4entertainment1420
5education6460
6clothes68200
7treatment300

Задание 28

Сколько рейсов совершили авиакомпании из Ростова (Rostov) в Москву (Moscow) ?

SELECT COUNT(*) AS count
FROM Trip
WHERE town_from = "Rostov" AND town_to = "Moscow"
Показать результат запроса:
count
14

Задание 29

Выведите имена пассажиров улетевших в Москву (Moscow) на самолете TU-134

SELECT DISTINCT name
FROM Passenger
	JOIN Pass_in_trip ON Pass_in_trip.passenger = Passenger.id
	JOIN Trip ON Trip.id = Pass_in_trip.trip
WHERE town_to = "Moscow"
	AND plane = "TU-134"
Показать результат запроса:
name
1Bruce Willis
2Ray Liotta
3Nikole Kidman
4Jennifer Lopez
5Kurt Russell

Задание 30

Выведите нагруженность (число пассажиров) каждого рейса (trip). Результат вывести в отсортированном виде по убыванию нагруженности.

SELECT trip,
	COUNT(Passenger) as count
FROM Pass_in_trip
GROUP BY trip
ORDER BY count DESC
Показать результат запроса:
tripcount
177716
277725
311814
411233
511872
688822
711452
811822
911881
1011001
1111241
1288811
1377781
1477731

Задание 31

Вывести всех членов семьи с фамилией Quincey.

SELECT *
FROM FamilyMembers
WHERE member_name LIKE "%Quincey"
Показать результат запроса:
member_idstatusmember_namebirthday
11fatherHeadley Quincey1960-05-13T00:00:00.000Z
22motherFlavia Quincey1963-02-16T00:00:00.000Z
33sonAndie Quincey1983-06-05T00:00:00.000Z
44daughterLela Quincey1985-06-07T00:00:00.000Z
55daughterAnnie Quincey1988-04-10T00:00:00.000Z

Задание 32

Вывести средний возраст людей (в годах), хранящихся в базе данных. Результат округлите до целого в меньшую сторону.

SELECT FLOOR(AVG(YEAR(CURDATE()) - YEAR(birthday))) as age
FROM FamilyMembers
Показать результат запроса:
age
146

Задание 34

Сколько всего 10-ых классов

SELECT COUNT(*) as count
FROM Class
WHERE name LIKE "10%"
Показать результат запроса:
count
12

Задание 35

Сколько различных кабинетов школы использовались 2.09.2019 в образовательных целях ?

SELECT COUNT(classroom) as count
FROM Schedule
WHERE date = "2019-09-02"
Показать результат запроса:
count
15

Задание 36

Выведите информацию об обучающихся живущих на улице Пушкина (ul. Pushkina)?

SELECT *
FROM Student
WHERE address LIKE "ul. Pushkina%"
Показать результат запроса:
idfirst_namemiddle_namelast_namebirthdayaddress
11NikolajFedorovichSokolov2000-10-01T00:00:00.000Zul. Pushkina, d. 36, kv. 5
22VyacheslavEvgenevichEliseev2000-11-21T00:00:00.000Zul. Pushkina, d. 40, kv. 7
33IvanAntonovichEfremov2000-09-19T00:00:00.000Zul. Pushkina, d. 58, kv. 16
44AnatolijValentinovichZHdanov2007-07-15T00:00:00.000Zul. Pushkina, d. 21, kv. 7
55GeorgijDmitrievichNoskov2000-03-03T00:00:00.000Zul. Pushkina, d. 45, kv. 65
66ArtyomBorisovichSergeev2007-01-01T00:00:00.000Zul. Pushkina, d. 1, kv. 5
77ArinaFyodorovnaEvseeva2000-08-11T00:00:00.000Zul. Pushkina, d. 21, kv. 51
811LeonidNikitichIgnatov2007-12-30T00:00:00.000Zul. Pushkina, d. 78, kv. 9
912SnezhanaYAkovlevnaSeliverstova2000-07-23T00:00:00.000Zul. Pushkina, d. 78, kv. 56
1026DmitrijLeonidovichTrofimov2001-05-06T00:00:00.000Zul. Pushkina, d. 78, kv. 9
1135SvyatoslavVyacheslavovichTarasov2002-01-14T00:00:00.000Zul. Pushkina, d. 5, kv. 6
1250NataliyaIgorevnaMyasnikova2002-04-02T00:00:00.000Zul. Pushkina, d. 1, kv. 23
1354RomanNikolaevichSHilov2003-08-06T00:00:00.000Zul. Pushkina, d. 56, kv. 80
1460AleksandraAndreevnaBelozyorova2003-02-12T00:00:00.000Zul. Pushkina, d. 3, kv. 21
1578VeraLvovnaEvseeva2004-07-04T00:00:00.000Zul. Pushkina, d. 5, kv. 13

Задание 38

Сколько Анн (Anna) учится в школе ?

SELECT COUNT(*) AS count
FROM Student
WHERE first_name = "Anna"
Показать результат запроса:
count
12

Задание 39

Сколько обучающихся в 10 B классе ?

SELECT COUNT(*) AS count
FROM Class
	JOIN Student_in_class ON Student_in_class.class = Class.id
WHERE name = "10 B"
Показать результат запроса:
count
111

Задание 41

Во сколько начинается 4-ый учебный предмет по расписанию ?

SELECT start_pair
FROM Timepair
LIMIT 3, 1
Показать результат запроса:
start_pair
111:05:00

Задание 43

Выведите фамилии преподавателей, которые ведут физическую культуру (Physical Culture). Отcортируйте преподавателей по фамилии.

SELECT last_name
FROM Teacher
	JOIN Schedule ON Schedule.teacher = Teacher.id
	JOIN Subject ON Subject.id = Schedule.subject
WHERE name = "Physical Culture"
ORDER BY last_name
Показать результат запроса:
last_name
1Romashkin
2Vaulina

Задание 46

В каких классах введет занятия преподаватель "Krauze" ?

SELECT DISTINCT name
FROM class
	JOIN Schedule ON Schedule.class = Class.id
	JOIN Teacher ON Teacher.id = Schedule.teacher
WHERE last_name = "Krauze"
Показать результат запроса:
name
111 A
211 B

Задание 49

Какой процент обучающихся учится в 10 A классе ?

SELECT (
		(
			SELECT COUNT(*)
			FROM Student_in_class
				JOIN Class ON class.id = Student_in_class.class
			WHERE class.name = "10 A"
		) / COUNT(*)
	) * 100 AS percent
FROM Student_in_class
Показать результат запроса:
percent
111.9048

Задание 51

Добавьте товар с именем "Cheese" и типом "food" в список товаров (Goods).

INSERT INTO Goods
SET good_id = (
		SELECT COUNT(*) + 1
		FROM Goods as a
	),
	good_name = "Cheese",
	type = (
		SELECT good_type_id
		FROM GoodTypes
		WHERE good_type_name = "food"
	)
Показать результат запроса:
good_idgood_nametype
11apartment fee1
22phone fee1
33bread2
44milk2
55red caviar3
66cinema4
77black caviar3
88cough tablets5
99potato2
1010pineapples3
1111television8
1212vacuum cleaner8
1313jacket7
1414fur coat7
1515music school fee6
1616english school fee6
1717Cheese2

Задание 52

Добавьте в список типов товаров (GoodTypes) новый тип "auto".

INSERT INTO GoodTypes
SET good_type_id = (
		SELECT COUNT(*) + 1
		FROM GoodTypes AS a
	),
	good_type_name = "auto"
Показать результат запроса:
good_type_idgood_type_name
11communal payments
22food
33delicacies
44entertainment
55treatment
66education
77clothes
88equipment
99auto

Задание 53

Измените имя "Andie Quincey" на новое "Andie Anthony".

UPDATE FamilyMembers
SET member_name = "Andie Anthony"
WHERE member_name = "Andie Quincey"
Показать результат запроса:
member_idstatusmember_namebirthday
11fatherHeadley Quincey1960-05-13T00:00:00.000Z
22motherFlavia Quincey1963-02-16T00:00:00.000Z
33sonAndie Anthony1983-06-05T00:00:00.000Z
44daughterLela Quincey1985-06-07T00:00:00.000Z
55daughterAnnie Quincey1988-04-10T00:00:00.000Z
66fatherErnest Forrest1961-09-11T00:00:00.000Z
77motherConstance Forrest1968-09-06T00:00:00.000Z
88daughterWednesday Addams2005-01-13T00:00:00.000Z

Задание 54

Удалить всех членов семьи с фамилией "Quincey".

DELETE FROM FamilyMembers
WHERE member_name LIKE "%Quincey"
Показать результат запроса:
member_idstatusmember_namebirthday
16fatherErnest Forrest1961-09-11T00:00:00.000Z
27motherConstance Forrest1968-09-06T00:00:00.000Z
38daughterWednesday Addams2005-01-13T00:00:00.000Z

Задание 56

Удалить все перелеты, совершенные из Москвы (Moscow).

DELETE FROM Trip
WHERE town_from = "Moscow"
Показать результат запроса:
idcompanyplanetown_fromtown_totime_outtime_in
111004BoeingRostovParis1900-01-01T14:30:00.000Z1900-01-01T17:50:00.000Z
211014BoeingParisRostov1900-01-01T08:12:00.000Z1900-01-01T11:45:00.000Z
311233TU-154RostovVladivostok1900-01-01T16:20:00.000Z1900-01-02T03:40:00.000Z
411243TU-154VladivostokRostov1900-01-01T09:00:00.000Z1900-01-01T19:50:00.000Z
511462IL-86RostovMoscow1900-01-01T17:55:00.000Z1900-01-01T20:01:00.000Z
611811TU-134RostovMoscow1900-01-01T06:12:00.000Z1900-01-01T08:01:00.000Z
711871TU-134RostovMoscow1900-01-01T15:42:00.000Z1900-01-01T17:39:00.000Z
811951TU-154RostovMoscow1900-01-01T23:30:00.000Z1900-01-02T01:11:00.000Z
977715BoeingLondonSingapore1900-01-01T01:00:00.000Z1900-01-01T11:00:00.000Z
1077725BoeingSingaporeLondon1900-01-01T12:00:00.000Z1900-01-02T02:00:00.000Z
1177735BoeingLondonSingapore1900-01-01T03:00:00.000Z1900-01-01T13:00:00.000Z
1277745BoeingSingaporeLondon1900-01-01T14:00:00.000Z1900-01-02T06:00:00.000Z
1377755BoeingLondonSingapore1900-01-01T09:00:00.000Z1900-01-01T20:00:00.000Z
1477765BoeingSingaporeLondon1900-01-01T18:00:00.000Z1900-01-02T08:00:00.000Z
1577775BoeingLondonSingapore1900-01-01T18:00:00.000Z1900-01-02T06:00:00.000Z
1677785BoeingSingaporeLondon1900-01-01T22:00:00.000Z1900-01-02T12:00:00.000Z
1788815BoeingLondonParis1900-01-01T03:00:00.000Z1900-01-01T04:00:00.000Z
1888825BoeingParisLondon1900-01-01T22:00:00.000Z1900-01-01T23:00:00.000Z

Задание 74

Выведите идентификатор и признак наличия интернета в помещении. Если интернет в сдаваемом жилье присутствует, то выведите «YES», иначе «NO».

SELECT id,
	IF(has_internet, 'YES', 'NO') AS has_internet
FROM Rooms
Показать результат запроса:
idhas_internet
11YES
22YES
33NO
44NO
55YES
66YES
77NO
88NO
99NO
1010NO
1111YES
1212NO
1313NO
1414NO
1515NO
1616NO
1717NO
1818YES
1919YES
2020NO
2121YES
2222NO
2323YES
2424YES
2525NO
2626YES
2727YES
2828YES
2929NO
3030YES
3131NO
3232NO
3333YES
3434NO
3535NO
3636NO
3737YES
3838NO
3939YES
4040YES
4141NO
4242YES
4343NO
4444YES
4545YES
4646NO
4747NO
4848YES
4949YES
5050NO

Задание 75

Выведите фамилию, имя и дату рождения студентов, кто был рожден в мае.

SELECT last_name,
	first_name,
	birthday
FROM Student
WHERE MONTH(birthday) = 5
Показать результат запроса:
last_namefirst_namebirthday
1VoroncovaAngelina2000-05-21T00:00:00.000Z
2BolshakovaValentina2001-05-30T00:00:00.000Z
3TrofimovDmitrij2001-05-06T00:00:00.000Z
4SidorovaPolina2002-05-18T00:00:00.000Z
5MakarovaViktoriya2002-05-03T00:00:00.000Z
6MarkovYUrij2003-05-15T00:00:00.000Z
7NesterovGleb2004-05-05T00:00:00.000Z
8MakarovDenis2004-05-09T00:00:00.000Z