**Контекст:** Задание по мотивам реального тестового в Сбере. Аналитик кредитных продуктов строит сводную таблицу: сколько первых, вторых, третьих и четвёртых контрактов было оформлено мужчинами и женщинами.
**Данные:**
[см. код в задании]
| client_id | gender | | loan_id | client_id | loan_date | amount |
|-----------|--------|---|---------|-----------|------------|---------|
| 1 | М | | 101 | 1 | 2024-01-15 | 500000 |
| 2 | Ж | | 102 | 1 | 2024-06-20 | 300000 |
| 3 | М | | 105 | 2 | 2024-03-01 | 400000 |
| ... | ... | | ... | ... | ... | ... |
**Задание:**
1. Для каждого клиента пронумеруйте контракты по дате (1-й, 2-й, 3-й, 4-й)
2. Постройте сводную таблицу: строки — номер контракта (1..4), столбцы — пол (М, Ж), значения — количество контрактов
3. Выведите contract_num, male_count, female_count
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE clients_table (
client_id INT PRIMARY KEY,
gender VARCHAR(10) NOT NULL -- 'М' или 'Ж'
);
CREATE TABLE loans_table (
loan_id INT PRIMARY KEY,
client_id INT NOT NULL,
loan_date DATE NOT NULL,
amount NUMERIC(12,2) NOT NULL
);
INSERT INTO clients_table (client_id, gender) VALUES
(1, 'М'), (2, 'Ж'), (3, 'М'), (4, 'Ж'), (5, 'М'), (6, 'Ж');
INSERT INTO loans_table (loan_id, client_id, loan_date, amount) VALUES
(101, 1, '2024-01-15', 500000),
(102, 1, '2024-06-20', 300000),
(103, 1, '2024-11-10', 200000),
(104, 1, '2025-02-05', 150000),
(105, 2, '2024-03-01', 400000),
(106, 2, '2024-09-15', 250000),
(107, 2, '2025-01-20', 180000),
(108, 3, '2024-05-10', 600000),
(109, 3, '2024-12-01', 350000),
(110, 4, '2024-02-14', 300000),
(111, 4, '2024-08-30', 200000),
(112, 4, '2024-12-15', 150000),
(113, 4, '2025-03-01', 100000),
(114, 5, '2024-07-01', 450000),
(115, 6, '2024-04-20', 350000),
(116, 6, '2024-10-10', 250000);
ROW_NUMBER CASE WHEN pivot агрегация SUM
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: ROW_NUMBER, CASE WHEN, pivot, агрегация, SUM.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания