**Задание для студента-аналитика данных (Python + SQL)** **Цель:** Проанализировать данные из базы `test_db`, сделать выводы о структуре компании, зарплатах, сотрудниках и динамике изменений. --- ### **1. Подключение к базе данных** - Установите соединение с MySQL-сервером через Python (используйте `mysql.connector` или `sqlalchemy`). - Выведите список таблиц в базе `test_db` и количество записей в каждой. --- ### **2. Исследование структуры данных** - Изучите связи между таблицами (например, `employees`, `salaries`, `departments`, `dept_emp`). - Напишите SQL-запросы для вывода: - 10 сотрудников с самой высокой текущей зарплатой. - Отделы с наибольшим количеством сотрудников. --- ### **3. Анализ зарплат** - Рассчитайте: - Среднюю, минимальную и максимальную зарплату по компании. - Среднюю зарплату по каждому отделу (актуальную на текущий момент). - Динамику изменения средней зарплаты по годам (используйте данные из `salaries`). - Визуализируйте результаты с помощью `matplotlib/seaborn` (например, линейный график для динамики зарплат). --- ### **4. Анализ сотрудников** - Определите: - Количество сотрудников, работающих в компании на текущий момент. - Процентное соотношение мужчин и женщин. - Текучесть кадров: сколько сотрудников уволилось за последний год (если данные позволяют). - Постройте гистограмму распределения стажа сотрудников (на основе `hire_date`). --- ### **5. Дополнительные задачи** - **Рекомендации для HR:** - Есть ли связь между стажем и зарплатой? Постройте scatter plot. - В каком отделе самая высокая текучесть кадров? - **Оптимизация:** - Сравните скорость выполнения SQL-запроса через Python и напрямую в MySQL. Сделайте выводы. --- ### **6. Итоговый отчет** - Оформите решение в Jupyter Notebook: - Код с комментариями. - Визуализации. - Выводы по каждому пункту. - Укажите, какие гипотезы можно проверить на этих данных дополнительно. --- **Советы:** - Используйте `pandas` для работы с результатами SQL-запросов. - Проверьте данные на пропуски и аномалии (например, отрицательные зарплаты). - Для работы с датами преобразуйте столбцы в тип `datetime`. **Пример SQL-запроса для вдохновения:** ```sql SELECT d.dept_name, AVG(s.salary) as avg_salary FROM salaries s JOIN dept_emp de ON s.emp_no = de.emp_no JOIN departments d ON de.dept_no = d.dept_no WHERE s.to_date > NOW() GROUP BY d.dept_name; ``` Удачи! 🚀