Skip to content

Commit 5dee23b

Browse files
committed
fix: 1.6 solutions
1 parent ac15e3b commit 5dee23b

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

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

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,35 @@ ORDER BY city, name;
8888
/* Вывести название месяца и количество командировок для каждого месяца.
8989
Считаем, что командировка относится к некоторому месяцу, если она началась в этом месяце. Информацию вывести сначала в отсортированном
9090
по убыванию количества, а потом в алфавитном порядке по названию месяца виде. Название столбцов – Месяц и Количество. */
91-
SELECT MONTHNAME(date_first) AS 'Месяц', COUNT(*) AS 'Количество'
91+
SELECT MONTHNAME(date_first) AS Месяц, COUNT(*) AS Количество
9292
FROM trip
9393
GROUP BY MONTHNAME(date_first)
94-
ORDER BY 'Количество' DESC, 'Месяц';
94+
ORDER BY Количество DESC, Месяц;
9595

9696
/* Вывести сумму суточных (произведение количества дней командировки и размера суточных) для командировок, первый день которых пришелся на февраль или март 2020 года.
9797
Значение суточных для каждой командировки занесено в столбец per_diem. Вывести фамилию и инициалы сотрудника, город, первый день командировки и сумму суточных.
9898
Последний столбец назвать Сумма. Информацию отсортировать сначала в алфавитном порядке по фамилиям сотрудников, а затем по убыванию суммы суточных. */
99-
SELECT `name`, city, date_first, ((DATEDIFF(date_last, date_first) + 1) * per_diem) AS 'Сумма'
99+
-- 1 variant
100+
SELECT `name`, city, date_first, ((DATEDIFF(date_last, date_first) + 1) * per_diem) AS Сумма
100101
FROM trip
101102
WHERE date_first LIKE '2020-02%' OR date_first LIKE '2020-03%'
102-
ORDER BY `name`, 'Сумма' DESC;
103-
103+
ORDER BY `name`, Сумма DESC;
104+
-- 2 variant
105+
SELECT `name`, city, date_first, per_diem * (DATEDIFF(date_last, date_first) + 1) AS Сумма
106+
FROM trip
107+
WHERE MONTHNAME(date_first) = 'February'
108+
OR MONTHNAME(date_first) = 'March'
109+
ORDER BY `name`, Сумма DESC
110+
111+
/* Вывести фамилию с инициалами и общую сумму суточных, полученных за все командировки
112+
для тех сотрудников, которые были в командировках больше чем 3 раза,
113+
в отсортированном по убыванию сумм суточных виде. Последний столбец назвать Сумма. */
114+
SELECT name, SUM((DATEDIFF(date_last, date_first) + 1) * per_diem) AS Сумма
115+
FROM trip
116+
GROUP BY name
117+
HAVING name IN (
118+
SELECT name
119+
FROM trip
120+
GROUP BY name
121+
HAVING COUNT(name) > 3)
122+
ORDER BY Сумма DESC;

0 commit comments

Comments
 (0)