Базовый синтаксис:
1. Выбрать весь столбец из таблицы без фильтрации
SELECT name FROM passenger
2. Выбрать столбец с фильтрацией
SELECT * ---> выбрать всё
FROM trip ---> откуда
WHERE town_from = 'Moscow' ---> критерий фильтрации
3. Вывести имена людей, которые заканчиваются на "man"
SELECT name
FROM passenger
WHERE name LIKE '%man' ---> символ % означает любую последовательность символов, а "man" - конкретную последовательность символов. Таким образом, данное условие выберет все значения в столбце name, которые заканчиваются на "man".
4. Вывести количество рейсов, совершенных на TU-134
SELECT COUNT(plane) AS count
FROM trip
WHERE plane = 'TU-134'
---> COUNT(plane) - это функция, которая подсчитывает количество строк, в которых значение в столбце plane не равно NULL.
5. Какие компании совершали перелеты на Boeing
SELECT DISTINCT name
FROM company c
JOIN trip t ON t.company = c.id
WHERE t.plane = 'Boeing'
---> SELECT DISTINCT name - выбирает уникальные значения из столбца name.
--->FROM company c - указывает, что данные будут выбираться из таблицы company и используется псевдоним c для этой таблицы.
---> JOIN trip t ON t.company = c.id - объединяет таблицу trip с таблицей company по условию, что значение в столбце company таблицы trip равно значению в столбце id таблицы company.
---> WHERE t.plane = 'Boeing' - фильтрует строки, выбирая только те, в которых значение в столбце plane таблицы trip равно 'Boeing'.
6. В какие города можно улететь из Парижа (Paris) и сколько времени это займёт?
SELECT town_to,
TIMEDIFF(time_in, time_out) AS flight_time
FROM trip
WHERE town_from = 'Paris'
---> TIMEDIFF(time_in, time_out) as flight_time - вычисляет разницу между значениями в столбцах time_in и time_out и называет полученный столбец flight_time.
7. Вывести вылеты, совершенные с 10 ч. по 14 ч. 1 января 1900 г.
SELECT *
FROM trip
WHERE time_out BETWEEN '1900-01-01T10:00:00' AND '1900-01-01T14:00:00'
8. Выведите пассажиров с самым длинным ФИО. Пробелы, дефисы и точки считаются частью имени.
SELECT name
FROM passenger
WHERE LENGTH(name) = (
SELECT MAX(LENGTH(name))
FROM passenger
);
9. Вывести id и количество пассажиров для всех прошедших полётов
SELECT trip,
COUNT(passenger) AS count
FROM Pass_in_trip
GROUP BY trip;
10. Вывести имена людей, у которых есть полный тёзка среди пассажиров
SELECT name
FROM passenger
GROUP BY name
HAVING COUNT(name) > 1;
---> GROUP BY name: группирует результаты по значению в столбце "name"
---> HAVING COUNT(name) > 1: фильтрует результаты и выводит только те строки, у которых количество повторяющихся значений в столбце "name" больше 1
11. Вывести отсортированный по количеству перелетов (по убыванию) и имени (по возрастанию) список пассажиров, совершивших хотя бы 1 полет.
SELECT name, COUNT(*) AS count
FROM Passenger
JOIN Pass_in_trip
ON Passenger.id = Pass_in_trip.passenger
GROUP BY passenger
HAVING COUNT(trip) > 0
ORDER BY COUNT(trip) DESC, name;