Загрузка данных
-- phpMyAdmin SQL Dump
-- version 5.2.0
-- https://www.phpmyadmin.net/
--
-- Хост: 127.0.0.1:3306
-- Время создания: Апр 20 2026 г., 09:19
-- Версия сервера: 10.8.4-MariaDB
-- Версия PHP: 8.1.9
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- База данных: `agregatnie_func_work`
--
-- --------------------------------------------------------
--
-- Структура таблицы `clients`
--
CREATE TABLE `clients` (
`id` int(11) NOT NULL,
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`gender` enum('М','Ж') COLLATE utf8mb4_unicode_ci NOT NULL,
`birth_date` date NOT NULL,
`registration_date` date NOT NULL,
`membership_type` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Дамп данных таблицы `clients`
--
INSERT INTO `clients` (`id`, `name`, `gender`, `birth_date`, `registration_date`, `membership_type`) VALUES
(1, 'Иван Петров', 'М', '1990-05-15', '2024-01-10', 'Годовой'),
(2, 'Мария Смирнова', 'Ж', '1985-08-22', '2024-02-15', 'Полугодовой'),
(3, 'Алексей Иванов', 'М', '1995-03-10', '2024-01-20', 'Месячный'),
(4, 'Елена Сидорова', 'Ж', '1988-11-30', '2024-03-01', 'Годовой'),
(5, 'Дмитрий Козлов', 'М', '1992-07-12', '2024-02-10', 'Полугодовой'),
(6, 'Анна Морозова', 'Ж', '1998-01-25', '2024-04-05', 'Месячный'),
(7, 'Сергей Волков', 'М', '1980-12-03', '2024-01-15', 'Годовой'),
(8, 'Ольга Новикова', 'Ж', '1993-09-18', '2024-03-20', 'Полугодовой'),
(9, 'Павел Жуков', 'М', '1987-04-08', '2024-02-01', 'Месячный'),
(10, 'Татьяна Романова', 'Ж', '1991-06-14', '2024-04-10', 'Годовой');
-- --------------------------------------------------------
--
-- Структура таблицы `sessions`
--
CREATE TABLE `sessions` (
`id` int(11) NOT NULL,
`trainer_id` int(11) NOT NULL,
`client_id` int(11) NOT NULL,
`session_date` date NOT NULL,
`duration_minutes` int(11) NOT NULL,
`price` decimal(10,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Дамп данных таблицы `sessions`
--
INSERT INTO `sessions` (`id`, `trainer_id`, `client_id`, `session_date`, `duration_minutes`, `price`) VALUES
(1, 1, 1, '2025-03-10', 60, '1500.00'),
(2, 1, 2, '2025-03-12', 90, '2000.00'),
(3, 1, 3, '2025-03-15', 60, '1500.00'),
(4, 2, 4, '2025-03-11', 60, '1400.00'),
(5, 2, 5, '2025-03-14', 90, '1900.00'),
(6, 3, 6, '2025-03-10', 45, '1200.00'),
(7, 3, 7, '2025-03-13', 60, '1600.00'),
(8, 4, 8, '2025-03-16', 60, '1300.00'),
(9, 5, 9, '2025-03-17', 90, '2200.00'),
(10, 6, 10, '2025-03-18', 60, '1500.00'),
(11, 1, 5, '2025-04-01', 60, '1500.00'),
(12, 2, 1, '2025-04-02', 90, '2000.00'),
(13, 3, 2, '2025-04-03', 45, '1200.00'),
(14, 4, 3, '2025-04-04', 60, '1300.00'),
(15, 5, 4, '2025-04-05', 90, '2200.00'),
(16, 6, 6, '2025-04-06', 60, '1500.00'),
(17, 1, 7, '2025-04-07', 60, '1500.00'),
(18, 2, 8, '2025-04-08', 90, '1900.00'),
(19, 3, 9, '2025-04-09', 60, '1600.00'),
(20, 4, 10, '2025-04-10', 60, '1300.00');
-- --------------------------------------------------------
--
-- Структура таблицы `trainers`
--
CREATE TABLE `trainers` (
`id` int(11) NOT NULL,
`name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`specialization` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`experience_years` int(11) NOT NULL,
`salary` decimal(10,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Дамп данных таблицы `trainers`
--
INSERT INTO `trainers` (`id`, `name`, `specialization`, `experience_years`, `salary`) VALUES
(1, 'Иванов Алексей', 'Йога', 5, '45000.00'),
(2, 'Петрова Мария', 'Пилатес', 8, '52000.00'),
(3, 'Смирнов Денис', 'Кроссфит', 3, '40000.00'),
(4, 'Козлова Елена', 'Стретчинг', 10, '58000.00'),
(5, 'Васильев Олег', 'Бодибилдинг', 12, '65000.00'),
(6, 'Соколова Анна', 'Йога', 4, '43000.00');
--
-- Индексы сохранённых таблиц
--
--
-- Индексы таблицы `clients`
--
ALTER TABLE `clients`
ADD PRIMARY KEY (`id`);
--
-- Индексы таблицы `sessions`
--
ALTER TABLE `sessions`
ADD PRIMARY KEY (`id`),
ADD KEY `trainer_id` (`trainer_id`),
ADD KEY `client_id` (`client_id`);
--
-- Индексы таблицы `trainers`
--
ALTER TABLE `trainers`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT для сохранённых таблиц
--
--
-- AUTO_INCREMENT для таблицы `clients`
--
ALTER TABLE `clients`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11;
--
-- AUTO_INCREMENT для таблицы `sessions`
--
ALTER TABLE `sessions`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;
--
-- AUTO_INCREMENT для таблицы `trainers`
--
ALTER TABLE `trainers`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- Ограничения внешнего ключа сохраненных таблиц
--
--
-- Ограничения внешнего ключа таблицы `sessions`
--
ALTER TABLE `sessions`
ADD CONSTRAINT `sessions_ibfk_1` FOREIGN KEY (`trainer_id`) REFERENCES `trainers` (`id`),
ADD CONSTRAINT `sessions_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`);
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Задания.
Задание 1
1.1. Посчитайте общее количество клиентов в таблице clients.
1.2. Найдите самого опытного тренера (максимальное количество лет опыта).
1.3. Найдите наименьшую зарплату среди тренеров.
1.4. Посчитайте среднюю продолжительность тренировки в минутах.
Округлите до целого.
1.5. Посчитайте общую сумму, которую заплатили клиенты за все
тренировки.
Задание 2
2.1. Посчитайте количество клиентов по типам абонементов. Выведите тип
абонемента и количество клиентов.
2.2. Для каждого тренера найдите минимальную и максимальную стоимость
его тренировки. Выведите имя тренера, минимальную и максимальную цену.
2.3. Посчитайте общее количество минут, которое провёл с клиентами
каждый тренер. Выведите имя тренера и сумму минут. Отсортируйте по
убыванию суммы.
2.4. Найдите средний возраст клиентов для каждого пола. Выведите пол и
средний возраст (в годах, без дробной части).
Задание 3
3.1. Посчитайте количество тренировок в разрезе «специализация тренера —
пол клиента». Выведите специализацию, пол клиента и количество
тренировок.
3.2. Для каждого тренера и каждого типа абонемента клиента посчитайте
суммарную стоимость проведённых тренировок. Выведите имя тренера, тип
абонемента и сумму. Отсортируйте по тренеру, затем по убыванию суммы.
Задание 4
4.1. Найдите тренеров, у которых средняя стоимость тренировки превышает
1600 рублей. Выведите имя тренера и среднюю стоимость.
4.2. Найдите специализации, по которым работает более одного тренера.
Выведите специализацию и количество тренеров.
4.3. Найдите клиентов, которые посетили более 2 тренировок. Выведите имя
клиента и количество тренировок.
4.4. Найдите типы абонементов, у которых средний возраст клиентов меньше
35 лет. Выведите тип абонемента и средний возраст.
Задание 5
5.1. Среди тренировок, проведённых в марте 2025 года, найдите тренеров, у
которых суммарная выручка превышает 4000 рублей. Выведите имя тренера
и сумму.
5.2. Среди клиентов женского пола найдите типы абонементов, по которым
средняя продолжительность тренировки больше 60 минут. Выведите тип
абонемента и среднюю продолжительность.
Задание 6
6.1. Посчитайте, сколько уникальных клиентов посетили тренировки
(таблица sessions).
6.2. Для каждого тренера посчитайте, сколько разных клиентов он
тренировал. Выведите имя тренера и количество уникальных клиентов.
Задание 7
7.1. Посчитайте количество тренировок и общую сумму выручки для
каждого месяца 2025 года. Выведите месяц (в формате ГГГГ-ММ),
количество тренировок и сумму выручки.
7.2. Для каждого месяца посчитайте среднюю продолжительность
тренировки. Выведите месяц и среднюю продолжительность, округлённую
до целого.
Задание 8
8.1. Найдите самого востребованного тренера по количеству проведённых
тренировок. Выведите имя тренера и количество тренировок.
8.2. Найдите клиента, который потратил больше всего денег на тренировки.
Выведите имя клиента и общую сумму.
8.3. Определите, тренировки по какой специализации принесли наибольшую
выручку в апреле 2025 года. Выведите специализацию и сумму выручки.