Задание для студента-аналитика данных (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-запроса для вдохновения:

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;

Удачи! 🚀