-- Добавляем нового водителя и создаем для него первую поездку
INSERT INTO drivers (full_name, phone, car_model, rating, is_active)
VALUES ('Павлов Иван Викторович', '+79991234455', 'Skoda Octavia', 5.0, true);
INSERT INTO rides (driver_id, client_id, tariff_id, start_address, end_address, distance_km, start_time, total_price, status)
VALUES (52, 1, 2, 'ул. Ленина, 10', 'ул. Мира, 5', 4.5, NOW(), 450, 'completed');
-- Выводим список всех выполненных заказов с именами водителей и клиентов
SELECT
r.id AS "ID Поездки",
d.full_name AS "Водитель",
c.full_name AS "Клиент",
r.start_address,
r.end_address,
r.status
FROM rides r
JOIN drivers d ON r.driver_id = d.id
JOIN clients c ON r.client_id = c.id
WHERE r.status = 'completed';
-- Считаем среднюю стоимость поездки для каждого тарифного плана
SELECT
t.name AS "Тариф",
AVG(r.total_price) AS "Средний чек"
FROM rides r
JOIN tariffs t ON r.tariff_id = t.id
GROUP BY t.name;
-- Находим клиентов, совершивших более 5 поездок, и сортируем их по активности
SELECT
c.full_name,
COUNT(r.id) AS "Кол-во поездок"
FROM clients c
JOIN rides r ON c.id = r.client_id
GROUP BY c.id, c.full_name
HAVING COUNT(r.id) > 5
ORDER BY "Кол-во поездок" DESC;
-- Переводим поездку в статус 'cancelled' и устанавливаем стоимость в 0
UPDATE rides
SET status = 'cancelled',
total_price = 0
WHERE id = 1;
SELECT * FROM rides WHERE id = 1;