🔗 Разбираем вторую часть тестового задания в Т-Банк

Перед нами схема из 5 таблиц: сотрудники, звонки, клиенты, системы и история позиций.

1.1. Список всех сотрудников по алфавиту Здесь проверяется база: выбор всех полей и сортировка

SELECT * FROM Employees ORDER BY last_nm, first_nm, middle_nm;

1.2. Сотрудники и их позиции на конкретную дату (10.10.2020) Тут важно правильно сджойнить историю должностей и отфильтровать актуальный срез времени

SELECT e.last_nm, e.first_nm, e.middle_nm, jh.position_nm FROM Employees e JOIN Job_history jh ON e.position_id = jh.position_id WHERE '2020-10-10' BETWEEN jh.valid_from_dttm AND jh.valid_to_dttm;

1.3. Список сотрудников с ЗП от 20к до 50к на текущий момент Используем фильтрацию по диапазону и техническую дату 9999-12-31 (или текущий момент), чтобы найти актуальные записи в истории

SELECT e.last_nm, e.first_nm, e.middle_nm, jh.salary, e.hire_dt FROM Employees e JOIN Job_history jh ON e.position_id = jh.position_id WHERE jh.salary BETWEEN 20000 AND 50000 AND jh.valid_to_dttm >= CURRENT_DATE; -- Или 9999-12-31 в зависимости от логики БД

1.4. Форматирование ФИО в один столбец через дефис Задача на конкатенацию строк. В разных СУБД синтаксис может отличаться (|| или CONCAT), используем стандартный

SELECT last_nm || '-' || first_nmask: Полноеmiddle_nm AS fio, birth_dt FROM Employees;

1.5. Количество звонков по дням с 01.10.2020 по сегодня Группировка и агрегация — «хлеб» аналитика. Приводим timestamp к формату даты

SELECT CAST(start_dttm AS DATE) AS call_date, COUNT(call_id) AS cnt_calls FROM Calls WHERE start_dttm >= '2020-10-01' GROUP BY 1 ORDER BY 1;

😮‍💨 Есть вопросы по логике джойнов? Пишите в комментариях, обсудим

🔗 Разбираем вторую часть тестового задания в Т-Банк
Перед нами схема из 5 таблиц: сотрудники, звонки, клиенты, системы и история позиций.
1.1 | Сетка — социальная сеть от hh.ru 🔗 Разбираем вторую часть тестового задания в Т-Банк
Перед нами схема из 5 таблиц: сотрудники, звонки, клиенты, системы и история позиций.
1.1 | Сетка — социальная сеть от hh.ru