В spasibo_ops — операции с бонусами: accrual — начисление, redeem — списание при оплате, expire — сгорание. В points всегда положительное число.
Посчитайте текущий баланс каждого клиента из clients. У клиента без операций баланс 0.
Верните client_id, full_name, balance. Порядок — по balance по убыванию, затем по client_id.
В работе: Экран «Мои бонусы» и сверка с процессингом партнёров.
Таблицы
clients — участники программы
| Колонка | Тип | Что значит |
|---|---|---|
client_id | int | ключ |
full_name | text | ФИО |
spasibo_ops — операции с бонусами
| Колонка | Тип | Что значит |
|---|---|---|
op_id | int | ключ |
client_id | int | клиент |
op_type | text | accrual / redeem / expire |
points | int | количество, > 0 |
op_at | timestamp | время |
Пример: данные
clients · 4 строки
| client_id | full_name |
|---|---|
| 1 | Елена Морозова |
| 2 | Тимур Галиев |
| 3 | Виктория Пак |
| 4 | Артём Зуев |
spasibo_ops · 5 строк
| op_id | client_id | op_type | points | op_at |
|---|---|---|---|---|
| 1 | 1 | accrual | 1200 | 2026-02-01T10:00:00 |
| 2 | 1 | redeem | 500 | 2026-02-10T12:00:00 |
| 3 | 2 | accrual | 300 | 2025-03-01T09:00:00 |
| 4 | 2 | expire | 300 | 2026-03-01T00:00:00 |
| 5 | 3 | accrual | 2500 | 2026-01-15T18:30:00 |
Ожидаемый ответ
| client_id | full_name | balance |
|---|---|---|
| 3 | Виктория Пак | 2500 |
| 1 | Елена Морозова | 700 |
| 2 | Тимур Галиев | 0 |
| 4 | Артём Зуев | 0 |
Как проверяем
Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
client_id, full_name, balance
Источник: на данных Сбера: бонусная программа СберСпасибо. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.