Войти Регистрация
Data base

73. Открытые позиции в брокерском счёте

Лёгкая

В trades — сделки на брокерских счетах: side = buy или sell, qty — число бумаг (всегда положительное).

Позиция — сумма купленных минус сумма проданных бумаг по счёту и тикеру. Нужны только открытые позиции: всё, где результат не ноль. Отрицательная позиция — это шорт, она тоже открыта.

Верните account_id, ticker, qty. Порядок: account_id, затем ticker.

В работе: Экран «Портфель» в приложении и сверка с депозитарием.

Таблицы

trades — одна строка — одна сделка

КолонкаТипЧто значит
trade_idintключ
account_idintсчёт
tickertextтикер
sidetextbuy / sell
qtyintколичество
price_rubnumericцена, ₽
traded_attimestampвремя сделки

Пример: данные

trades · 6 строк

trade_idaccount_idtickersideqtyprice_rubtraded_at
11SBERbuy10301,52025-11-03T10:05:00
21SBERsell4315,22025-12-10T12:30:00
31GAZPbuy100128,42025-11-05T11:00:00
41GAZPsell100131,12026-01-20T15:45:00
52YDEXbuy341202026-02-02T10:15:00
62LKOHsell270502026-02-03T16:20:00

Ожидаемый ответ

account_idtickerqty
1SBER6
2LKOH-2
2YDEX3
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
account_id, ticker, qty
GROUP BYHAVINGусловная агрегация

Источник: на данных Т-Инвестиций: сделки по счетам. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.