Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3616571
А
Аноним
28 мая 2026 07:50 · публичный вопрос
А
Аноним

Код кадров на вакансию за последнюю неделю

Нейросеть28 мая 2026 07:50

Задача понята: нужно получить коды кадров (hr_code) для вакансий, размещённых за последнюю неделю, и посчитать количество вакансий по каждому коду.

Краткий план

  • Определим период: последняя неделя включает даты за последние 7 дней, включая сегодня.
  • Отфильтруем записи по дате размещения.
  • Посчитаем количество вакансий для каждого кадрового кода (hr_code).
  • Выведем результат в удобном виде (у кого нет hr_code — пропустим).

Ниже — несколько вариантов реализации. Выберите удобный вам язык/инструмент.

  1. Вариант на Python с использованием pandas (самый простой и надёжный для табличных данных)

Что понадобится:

  • Библиотека pandas.
  • Данные в DataFrame с как минимум столбцами: posting_date (дата размещения) и hr_code (код кадров).

Код (пример):

import pandas as pd
from datetime import datetime

def get_last_week_hr_codes(df, date_col='posting_date', hr_col='hr_code'):
    # Приведём даты к типу datetime
    df[date_col] = pd.to_datetime(df[date_col], errors='coerce')
    # Определим диапазон: последние 7 дней (включая сегодня)
    today = pd.Timestamp.today().normalize()
    start = today - pd.Timedelta(days=6)

    # Фильтрация по дате
    mask = (df[date_col] >= start) & (df[date_col] <= today)
    subset = df.loc[mask]

    # Проверяем наличие колонки hr_code
    if hr_col not in subset.columns:
        raise KeyError(f"Колонка '{hr_col}' не найдена в данных.")

    # Группировка и подсчёт
    result = (
        subset
        .dropna(subset=[hr_col])            # исключим записи без hr_code
        .groupby(hr_col)
        .size()
        .reset_index(name='count')
        .sort_values('count', ascending=False)
    )
    return result

# Пример использования
data = [
    {'posting_date': '2026-05-23', 'hr_code': 'A1', 'position': 'Engineer'},
    {'posting_date': '2026-05-26', 'hr_code': 'A2', 'position': 'Analyst'},
    {'posting_date': '2026-05-26', 'hr_code': 'A1', 'position': 'Engineer'},
    {'posting_date': '2026-05-20', 'hr_code': 'A3', 'position': 'Designer'},  # вне диапазона
]

df = pd.DataFrame(data)
print(get_last_week_hr_codes(df))

Вывод будет что-то вроде: hr_code | count A1 | 2 A2 | 1 (A3 исключается, если дата вне диапазона)

  1. Вариант без зависимостей (чистый Python)

Если вы не можете использовать pandas, можно посчитать вручную по списку словарей.

from datetime import datetime, date, timedelta

def get_last_week_hr_codes_simple(records, date_col='posting_date', hr_col='hr_code'):
    today = date.today()
    start = today - timedelta(days=6)
    counts = {}

    for rec in records:
        dt_str = rec.get(date_col)
        hr = rec.get(hr_col)
        if not dt_str or not hr:
            continue
        try:
            dt = datetime.strptime(dt_str, '%Y-%m-%d').date()
        except ValueError:
            continue
        if start <= dt <= today:
            counts[hr] = counts.get(hr, 0) + 1

    # Преобразуем в отсортированный список по убыванию
    return sorted(counts.items(), key=lambda kv: kv[1], reverse=True)

# Пример использования
records = [
    {'posting_date': '2026-05-23', 'hr_code': 'A1', 'position': 'Engineer'},
    {'posting_date': '2026-05-26', 'hr_code': 'A2', 'position': 'Analyst'},
    {'posting_date': '2026-05-26', 'hr_code': 'A1', 'position': 'Engineer'},
    {'posting_date': '2026-05-20', 'hr_code': 'A3', 'position': 'Designer'},
]

print(get_last_week_hr_codes_simple(records))
  1. SQL-запрос (если данные хранятся в базе данных)

Если данные хранятся в таблице вакансий с колонками posting_date и hr_code:

SELECT hr_code, COUNT(*) AS count
FROM vacancies
WHERE posting_date >= CURRENT_DATE - INTERVAL '6 days'
GROUP BY hr_code
ORDER BY count DESC;

Дополнительные пояснения

  • Последняя неделя: период от сегодня минус 6 дней до сегодня включительно. Если нужно иначе (например, "последняя 7-дневная неделя, считая с понедельника"), скажите — адаптирую.
  • Обработку дат лучше делать с нормализацией по часовому поясу, чтобы не промахнуться на переходах даты.
  • В данных могут встречаться записи без hr_code. В примерах я предлагаю игнорировать такие записи, но можно заменить на отдельную категорию "UNKNOWN" или включить их по желанию.
  • Если в ваших данных есть разные форматы дат (например, виде '2026/05/23'), pandas будет справляться после указания соответствующего формата или позволить автоматическое преобразование.

Если хотите, можно адаптировать код под ваш конкрет формат данных и язык/среду разработки. Напишите, какие данные у вас есть (пример CSV/Excel/SQL-схема) — и я дам точный готовый скрипт под вашу задачу.

Код кадров на вакансию за последнюю неделю
Задача понята: нужно получить коды кадров (hr_code) для вакансий, размещённых за последнюю неделю, и посчитать количество вакансий по каждому коду. Краткий план - Определим период: последняя неделя включает даты за последние 7 дней, включая сегодня. - Отфильтруем записи по дате размещения. - Посчитаем количество вакансий для каждого кадрового кода (hr_code). - Выведем результат в удобном виде (у кого нет hr_code — пропустим). Ниже — несколько вариантов реализации. Выберите удобный вам язык/инструмент. 1) Вариант на Python с использованием pandas (самый простой и надёжный для табличных данных) Что понадобится: - Библиотека pandas. - Данные в DataFrame с как минимум столбцами: posting_date (дата размещения) и hr_code (код кадров). Код (пример): ```python import pandas as pd from datetime import datetime def get_last_week_hr_codes(df, date_col='posting_date', hr_col='hr_code'): # Приведём даты к типу datetime df[date_col] = pd.to_datetime(df[date_col], errors='coerce') # Определим диапазон: последние 7 дней (включая сегодня) today = pd.Timestamp.today().normalize() start = today - pd.Timedelta(days=6) # Фильтрация по дате mask = (df[date_col] >= start) & (df[date_col] <= today) subset = df.loc[mask] # Проверяем наличие колонки hr_code if hr_col not in subset.columns: raise KeyError(f"Колонка '{hr_col}' не найдена в данных.") # Группировка и подсчёт result = ( subset .dropna(subset=[hr_col]) # исключим записи без hr_code .groupby(hr_col) .size() .reset_index(name='count') .sort_values('count', ascending=False) ) return result # Пример использования data = [ {'posting_date': '2026-05-23', 'hr_code': 'A1', 'position': 'Engineer'}, {'posting_date': '2026-05-26', 'hr_code': 'A2', 'position': 'Analyst'}, {'posting_date': '2026-05-26', 'hr_code': 'A1', 'position': 'Engineer'}, {'posting_date': '2026-05-20', 'hr_code': 'A3', 'position': 'Designer'}, # вне диапазона ] df = pd.DataFrame(data) print(get_last_week_hr_codes(df)) ``` Вывод будет что-то вроде: hr_code | count A1 | 2 A2 | 1 (A3 исключается, если дата вне диапазона) 2) Вариант без зависимостей (чистый Python) Если вы не можете использовать pandas, можно посчитать вручную по списку словарей. ```python from datetime import datetime, date, timedelta def get_last_week_hr_codes_simple(records, date_col='posting_date', hr_col='hr_code'): today = date.today() start = today - timedelta(days=6) counts = {} for rec in records: dt_str = rec.get(date_col) hr = rec.get(hr_col) if not dt_str or not hr: continue try: dt = datetime.strptime(dt_str, '%Y-%m-%d').date() except ValueError: continue if start <= dt <= today: counts[hr] = counts.get(hr, 0) + 1 # Преобразуем в отсортированный список по убыванию return sorted(counts.items(), key=lambda kv: kv[1], reverse=True) # Пример использования records = [ {'posting_date': '2026-05-23', 'hr_code': 'A1', 'position': 'Engineer'}, {'posting_date': '2026-05-26', 'hr_code': 'A2', 'position': 'Analyst'}, {'posting_date': '2026-05-26', 'hr_code': 'A1', 'position': 'Engineer'}, {'posting_date': '2026-05-20', 'hr_code': 'A3', 'position': 'Designer'}, ] print(get_last_week_hr_codes_simple(records)) ``` 3) SQL-запрос (если данные хранятся в базе данных) Если данные хранятся в таблице вакансий с колонками posting_date и hr_code: ```sql SELECT hr_code, COUNT(*) AS count FROM vacancies WHERE posting_date >= CURRENT_DATE - INTERVAL '6 days' GROUP BY hr_code ORDER BY count DESC; ``` Дополнительные пояснения - Последняя неделя: период от сегодня минус 6 дней до сегодня включительно. Если нужно иначе (например, "последняя 7-дневная неделя, считая с понедельника"), скажите — адаптирую. - Обработку дат лучше делать с нормализацией по часовому поясу, чтобы не промахнуться на переходах даты. - В данных могут встречаться записи без hr_code. В примерах я предлагаю игнорировать такие записи, но можно заменить на отдельную категорию "UNKNOWN" или включить их по желанию. - Если в ваших данных есть разные форматы дат (например, виде '2026/05/23'), pandas будет справляться после указания соответствующего формата или позволить автоматическое преобразование. Если хотите, можно адаптировать код под ваш конкрет формат данных и язык/среду разработки. Напишите, какие данные у вас есть (пример CSV/Excel/SQL-схема) — и я дам точный готовый скрипт под вашу задачу.