SQL ACADEMY ответы и решения заданий (часть 2, задания 23-44)

SQL Academy (ответы и решения заданий 23-44)
SQL Academy (ответы и решения заданий 23-44)

Ниже представлены решения заданий из онлайн тренажера на сайте SQL ACADEMY (sql-academy.org). Здесь представлены ответы на задания 23-44.

Ответы на задания 1-22 (часть 1) здесь.

Ответы на задания 45-66 (часть 3) будут тут.

Ответы на задания 67-76 (часть 4) тут.

Задание 23. Найдите самый дорогой деликатес (delicacies) и выведите его стоимость.

SELECT g.good_name, p.unit_price
FROM Goods AS g 
JOIN Payments AS p ON (g.good_id=p.good)
JOIN GoodTypes AS gt ON (g.type=gt.good_type_id)
WHERE p.unit_price = (SELECT MAX(p.unit_price) 
                        FROM Payments AS p
                        JOIN Goods AS g ON (g.good_id=p.good)
                        JOIN GoodTypes AS gt ON (g.type=gt.good_type_id) 
                        WHERE gt.good_type_name='delicacies');

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

SELECT member_name, SUM(amount*unit_price) AS costs
FROM FamilyMembers AS fm
JOIN Payments AS p
    ON fm.member_id=p.family_member
WHERE MONTH(date) = 06 AND YEAR(date) = 2005
GROUP BY member_name;

Задание 25. Определить, какие товары имеются в таблице Goods, но не покупались в течение 2005 года

SELECT good_name 
FROM Goods
WHERE good_id NOT IN (SELECT good FROM Payments 
                    WHERE YEAR(date) = 2005);

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

SELECT good_type_name
FROM GoodTypes
WHERE good_type_id NOT IN (
    SELECT good_type_id FROM GoodTypes
    JOIN Goods ON good_type_id=type
    JOIN Payments ON good_id=good
    WHERE YEAR(date)=2005);

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

SELECT good_type_name, SUM(amount*unit_price) AS costs
FROM GoodTypes
JOIN Goods ON good_type_id=type
JOIN Payments ON good_id=good
WHERE YEAR(date)=2005
GROUP BY good_type_name;

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

SELECT COUNT(*) as count
FROM Trip
WHERE town_from='Rostov' AND town_to='Moscow';

Задание 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';

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

SELECT trip, COUNT(Passenger) as count
FROM Pass_in_trip
GROUP BY trip
ORDER BY count DESC;

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

SELECT * 
FROM FamilyMembers
WHERE member_name LIKE '%Quincey';

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

SELECT FLOOR(AVG(YEAR(CURRENT_DATE) - YEAR(birthday))) AS age
FROM FamilyMembers;

Задание 33. Найдите среднюю стоимость икры. В базе данных хранятся данные о покупках красной (red caviar) и черной икры (black caviar).

SELECT AVG(unit_price) AS cost
FROM Payments
WHERE good IN (SELECT good_id FROM Goods
                WHERE good_name LIKE '%caviar');

Задание 34. Сколько всего 10-ых классов

SELECT COUNT(name) AS count
FROM Class
WHERE name LIKE '10%';

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

SELECT COUNT(classroom) AS count
FROM Schedule
WHERE date='2019-09-02';

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

SELECT *
FROM Student
WHERE address LIKE 'ul. Pushkina%';

Задание 37. Сколько лет самому молодому обучающемуся ?

SELECT MIN(TIMESTAMPDIFF(YEAR,birthday,CURRENT_DATE)) AS year
FROM Student;

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

SELECT COUNT(first_name) AS count
FROM Student
WHERE first_name='Anna';

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

SELECT COUNT(student) AS count
FROM Student_in_class
JOIN Class
    ON Student_in_class.class=Class.id
WHERE Class.name = '10 B';

Задание 40. Выведите название предметов, которые преподает Ромашкин П.П. (Romashkin P.P.) ?

SELECT name AS subjects
FROM Subject
JOIN Schedule ON Subject.id=Schedule.subject
JOIN Teacher ON Schedule.teacher=Teacher.id
WHERE Teacher.last_name='Romashkin'
    AND Teacher.first_name LIKE 'P%'
    AND Teacher.middle_name LIKE 'P%';

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

SELECT start_pair
FROM Timepair
WHERE id=4;

Задание 42. Сколько времени обучающийся будет находиться в школе, учась со 2-го по 4-ый уч. предмет ?

SELECT DISTINCT TIMEDIFF( 
                (SELECT end_pair FROM Timepair WHERE id=4),
                (SELECT start_pair FROM Timepair WHERE id=2)
                ) AS time
FROM Timepair;

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

SELECT last_name
FROM Teacher
JOIN Schedule
    ON Teacher.id=Schedule.teacher
JOIN Subject
    ON Schedule.subject=Subject.id
WHERE Subject.name = 'Physical Culture'
ORDER BY Teacher.last_name

Задание 44. Найдите максимальный возраст (колич. лет) среди обучающихся 10 классов ?

SELECT MAX(TIMESTAMPDIFF(YEAR,birthday,CURRENT_DATE)) as max_year
FROM Student 
JOIN Student_in_class
    ON Student.id=Student_in_class.student
JOIN Class
    ON Student_in_class.class=Class.id
WHERE Class.name LIKE '10%';

Ответы на задания 45-66 здесь.

Задать вопрос

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Копировать не надо!