Pet-проект на MySQL: полный путь от сырого CSV с вакансиями hh.kz до аналитической витрины и SQL-запросов по зарплатам, городам, категориям, опыту и навыкам.
Проект имитирует полный цикл работы аналитика с сырыми данными: загрузка неочищенного датасета, проверка качества, нормализация полей, подготовка staging-таблицы, создание аналитической витрины и формулировка бизнес-выводов на основе SQL-запросов.
- После удаления дублей остаётся 1 508 вакансий из 1 754 исходных строк; зарплата указана у 641 вакансии, то есть у 42,51% выборки.
- Самая крупная категория —
Software Developer: 710 вакансий, зарплата раскрыта в 36,76% случаев, средняя нижняя граница вилки — около 550 тыс. KZT. - По опыту средняя нижняя граница зарплаты растёт от 192,6 тыс. KZT для вакансий без опыта до 878,2 тыс. KZT для вакансий с требованием более 6 лет.
- В зарплатной сегментации нижние границы вилок делятся на квартальные диапазоны: 70-200 тыс., 200-300 тыс., 300-450 тыс. и 467 тыс.-2,802 млн KZT.
- Среди проверенных навыков наибольшую премию показывают
Docker,Python,Java,MySQL,SQLиReact, но по части навыков выборка маленькая, поэтому результат нужно интерпретировать осторожно.
Скриншот демонстрирует результаты анализа доли вакансий с указанной зарплатой (salary_disclosed_pct) по каждой категории должностей. Это позволяет понять, в каких профессиях работодатели чаще скрывают уровень дохода, и оценить, насколько репрезентативны средние показатели по рынку.
Скриншот показывает сравнение средней зарплаты вакансий с конкретным навыком и без него. При интерпретации важны не только premium_pct, но и размер выборки n_with_salary.
Скриншот показывает разбиение рынка на квартальные зарплатные сегменты: от бюджетного до премиального.
- Источник: IT Jobs in Kazakhstan General Dataset.
- Автор датасета: Arman Zhalgasbayev.
- Площадка: Kaggle.
- Основа данных: вакансии с hh.kz.
- Период среза: июнь-июль 2023 года.
- Объём: 1 754 исходные строки, после удаления дублей — 1 508 вакансий.
- Основной файл:
itjobskz.csv. - База в ноутбуке:
it_jobs_db.
Источник: https://www.kaggle.com/datasets/armanzhalgasbayev/it-jobs-in-kazakhstan-general-dataset
- доля вакансий с указанной зарплатой по категориям;
- средняя зарплата по уровню опыта;
- распределение направлений по городам;
- сравнение категорий по числу вакансий и зарплатам;
- компании, которые чаще всего нанимают по направлениям;
- частота навыков в требованиях;
- зарплатная премия для вакансий с конкретным навыком;
- соответствие грейдов Junior/Middle/Senior требованиям по опыту;
- квартильные зарплатные сегменты.
- MySQL 8;
LOAD DATA LOCAL INFILE;CREATE TABLE AS SELECT;VIEW;- CTE;
CASE;JOIN;GROUP BYиHAVING;- оконные функции;
- регулярные выражения;
- очистка текстовых полей;
- нормализация зарплат и валют;
- последовательная подготовка данных перед анализом;
- работа с локальным паролем через
.env.
- В исходном CSV поле
jobсодержит компанию, а полеJobсодержит категорию/роль вакансии. В staging-таблице они намеренно переименованы вcompanyиjob_category, чтобы аналитические запросы работали с корректным смыслом колонок. - Порог 70 000 KZT для отсечения подозрительно низких зарплат связан с минимальной месячной зарплатой в Казахстане на 2023 год. Значения ниже этого уровня зануляются только в зарплатных полях; сама вакансия остаётся в датасете.
- Курсы валют заданы вручную как справочник на период среза датасета:
USD = 467 KZT,EUR = 490 KZT,RUR = 5.35 KZT. Для промышленного пайплайна исторические курсы лучше загружать из официального источника.
Источники:
- Минимальная зарплата РК на 2023 год: https://www.gov.kz/memleket/entities/kgd-zhetysu/press/news/details/479860?lang=en
- Официальные исторические курсы Национального банка РК: https://nationalbank.kz/en/news/oficialnye-kursy
- Данные покрывают короткий период, поэтому проект показывает срез рынка, а не долгосрочную динамику.
- Зарплаты указаны не во всех вакансиях; выводы по категориям с низкой прозрачностью зарплат менее устойчивы.
- Курсы валют заданы вручную как справочная таблица внутри ноутбука, а не подтягиваются автоматически из исторического источника.
- Категории вакансий нормализованы простыми правилами через
CASE; для промышленного решения стоило бы вынести справочник категорий в отдельную таблицу. - Поиск навыков сделан регулярными выражениями по тексту требований, поэтому возможны пропуски и ложные совпадения.
- Премии по навыкам с малой выборкой могут быть нестабильны; для финального вывода стоит смотреть не только
premium_pct, но иn_with_salary.


