Skip to content

Commit c9a6649

Browse files
committed
fix: solutions
1 parent 75d60c5 commit c9a6649

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

1. The relational model/1.6 Trip table/solutions.sql

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,28 @@
1+
-- Создание таблицы и вставка данных.
2+
CREATE TABLE trip( trip_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(30), city VARCHAR(25), per_diem DECIMAL(8, 2), date_first DATE, date_last DATE );
3+
4+
INSERT INTO trip(name, city, per_diem, date_first, date_last)
5+
VALUES ("Баранов П.Е.", "Москва", 700, 2020 - 01 - 12, 2020 - 01 - 17),
6+
("Абрамова К.А", "Владивосток", 450, 2020 - 01 - 14, 2020 - 01 - 27),
7+
("Семенов И.В", "Москва", 700, 2020 - 01 - 23, 2020 - 01 - 31),
8+
("Ильиных Г.Р", "Владивосток", 450, 2020 - 01 - 12, 2020 - 02 - 02),
9+
("Колесов С.П", "Москва", 700, 2020 - 02 - 01, 2020 - 02 - 06),
10+
("Баранов П.Е", "Москва", 700, 2020 - 02 - 14, 2020 - 02 - 22),
11+
("Абрамова К.А", "Москва", 700, 2020 - 02 - 23, 2020 - 03 - 01),
12+
("Лебедев Т.К", "Москва", 700, 2020 - 03 - 03, 2020 - 03 - 06),
13+
("Колесов С.П", "Новосибирск", 450, 2020 - 02 - 27, 2020 - 03 - 12),
14+
("Семенов И.В", "Санкт-Петербург", 700, 2020 - 03 - 29, 2020 - 04 - 05),
15+
("Абрамова К.А", "Москва", 700, 2020 - 04 - 06, 2020 - 04 - 14),
16+
("Баранов П.Е", "Новосибирск", 450, 2020 - 04 - 18, 2020 - 05 - 04),
17+
("Лебедев Т.К", "Томск", 450, 2020 - 05 - 20, 2020 - 05 - 31),
18+
("Семенов И.В", "Санкт-Петербург", 700, 2020 - 06 - 01, 2020 - 06 - 03),
19+
("Абрамова К.А", "Санкт-Петербург", 700, 2020 - 05 - 28, 2020 - 06 - 04),
20+
("Федорова А.Ю", "Новосибирск", 450, 2020 - 05 - 25, 2020 - 06 - 04),
21+
("Колесов С.П", "Новосибирск", 450, 2020 - 06 - 03, 2020 - 06 - 12),
22+
("Федорова А.Ю", "Томск", 450, 2020 - 06 - 20, 2020 - 06 - 26),
23+
("Абрамова К.А", "Владивосток", 450, 2020 - 07 - 02, 2020 - 07 - 13),
24+
("Баранов П.Е", "Воронеж", 450, 2020 - 07 - 19, 2020 - 07 - 25);
25+
126
/* Вывести из таблицы trip информацию о командировках тех сотрудников, фамилия которых заканчивается на букву «а», в отсортированном по убыванию
227
даты последнего дня командировки виде. В результат включить столбцы name, city, per_diem, date_first, date_last. */
328
SELECT name, city, per_diem, date_first, date_last
@@ -6,3 +31,61 @@ WHERE name LIKE '%а %'
631
ORDER BY date_last DESC;
732

833
/* Вывести в алфавитном порядке фамилии и инициалы тех сотрудников, которые были в командировке в Москве. */
34+
-- 1 variant
35+
SELECT DISTINCT `name` FROM trip
36+
WHERE city = 'Москва'
37+
ORDER BY `name`;
38+
-- 2 variant
39+
SELECT `name` FROM trip
40+
WHERE city = 'Москва'
41+
GROUP BY `name`
42+
ORDER BY `name`;
43+
44+
/* Для каждого города посчитать, сколько раз сотрудники в нем были.
45+
Информацию вывести в отсортированном в алфавитном порядке
46+
по названию городов. Вычисляемый столбец назвать Количество. */
47+
SELECT city, COUNT(city) AS 'Количество'
48+
FROM trip
49+
GROUP BY city
50+
ORDER BY city;
51+
52+
/* Вывести два города, в которых чаще всего были в командировках сотрудники.
53+
Вычисляемый столбец назвать Количество. */
54+
SELECT city, COUNT(city) AS 'Количество'
55+
FROM trip
56+
GROUP BY city
57+
ORDER BY Количество DESC
58+
LIMIT 2;
59+
60+
/* Вывести информацию о командировках во все города кроме Москвы и Санкт-Петербурга:
61+
фамилии и инициалы сотрудников, город , длительность командировки в днях, при этом первый и последний день относится к периоду командировки.
62+
Последний столбец назвать Длительность. Информацию вывести в упорядоченном по убыванию длительности поездки, а потом по убыванию названий городов. */
63+
-- 1 variant
64+
SELECT name, city, (DATEDIFF(date_last, date_first) + 1) AS 'Длительность'
65+
FROM trip
66+
WHERE city NOT IN ('Москва', 'Санкт-Петербург')
67+
ORDER BY Длительность DESC, city DESC;
68+
-- 2 variant
69+
SELECT name, city, DATEDIFF(date_last, date_first) + 1 AS 'Длительность'
70+
FROM trip
71+
WHERE city <> 'Москва' AND city <> 'Санкт-Петербург'
72+
ORDER BY Длительность DESC, city DESC;
73+
74+
/* Вывести информацию о командировках сотрудника(ов), которые были самыми короткими по времени.
75+
В результат включить столбцы name, city, date_first, date_last. */
76+
SELECT name, city, date_first, date_last
77+
FROM trip
78+
WHERE DATEDIFF(date_last, date_first) = (SELECT MIN(DATEDIFF(date_last, date_first)) FROM trip);
79+
80+
/* Вывести информацию о командировках, начало и конец которых относятся к одному месяцу (год может быть любой).
81+
В результат включить столбцы name, city, date_first, date_last.
82+
Строки отсортировать сначала в алфавитном порядке по названию города, а затем по фамилии сотрудника. */
83+
SELECT name, city, date_first, date_last
84+
FROM trip
85+
WHERE MONTH(date_first) = MONTH(date_last)
86+
ORDER BY city, name;
87+
88+
/* Вывести название месяца и количество командировок для каждого месяца.
89+
Считаем, что командировка относится к некоторому месяцу, если она началась в этом месяце. Информацию вывести сначала в отсортированном
90+
по убыванию количества, а потом в алфавитном порядке по названию месяца виде. Название столбцов – Месяц и Количество. */
91+

0 commit comments

Comments
 (0)