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. */
328SELECT name, city, per_diem, date_first, date_last
@@ -6,3 +31,61 @@ WHERE name LIKE '%а %'
631ORDER 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