В trades — сделки на брокерских счетах: side = buy или sell, qty — число бумаг (всегда положительное).
Позиция — сумма купленных минус сумма проданных бумаг по счёту и тикеру. Нужны только открытые позиции: всё, где результат не ноль. Отрицательная позиция — это шорт, она тоже открыта.
Верните account_id, ticker, qty. Порядок: account_id, затем ticker.
В работе: Экран «Портфель» в приложении и сверка с депозитарием.
Таблицы
trades — одна строка — одна сделка
| Колонка | Тип | Что значит |
|---|---|---|
trade_id | int | ключ |
account_id | int | счёт |
ticker | text | тикер |
side | text | buy / sell |
qty | int | количество |
price_rub | numeric | цена, ₽ |
traded_at | timestamp | время сделки |
Пример: данные
trades · 6 строк
| trade_id | account_id | ticker | side | qty | price_rub | traded_at |
|---|---|---|---|---|---|---|
| 1 | 1 | SBER | buy | 10 | 301,5 | 2025-11-03T10:05:00 |
| 2 | 1 | SBER | sell | 4 | 315,2 | 2025-12-10T12:30:00 |
| 3 | 1 | GAZP | buy | 100 | 128,4 | 2025-11-05T11:00:00 |
| 4 | 1 | GAZP | sell | 100 | 131,1 | 2026-01-20T15:45:00 |
| 5 | 2 | YDEX | buy | 3 | 4120 | 2026-02-02T10:15:00 |
| 6 | 2 | LKOH | sell | 2 | 7050 | 2026-02-03T16:20:00 |
Ожидаемый ответ
| account_id | ticker | qty |
|---|---|---|
| 1 | SBER | 6 |
| 2 | LKOH | -2 |
| 2 | YDEX | 3 |
Как проверяем
Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
account_id, ticker, qty
Источник: на данных Т-Инвестиций: сделки по счетам. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.