Загрузка данных


-- Добавляем нового водителя и создаем для него первую поездку
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;