Ускорение изменения данных, уменьшение числа проходов, количества переменных и прочая оптимизация кода – приветствуются, а для специалистов высокого уровня настоятельно рекомендуется. Это поможет в полной мере понять Ваш уровень, как разработчика и на собеседовании уже этот вопрос не поднимать.
Есть таблица test_pay:
Название колонки | Описание колонки |
---|---|
clnt_id | ID клиента |
subs_id | ID абонента |
pay_sum | Сумма платежа |
pay_date | Дата платежа |
del_date | Дата удаления платежа. Если платеж не удален, то не заполняется |
и таблица test_data:
Название колонки | Описание колонки |
---|---|
n | ID (порядковый номер) |
clnt_id | ID клиента |
subs_id | ID абонента |
all_pay_sum | Сумма платежей |
- На клиенте может быть много абонентов.
- Один и тот же абонент не может быть на разных клиентах.
- У абонента может быть много платежей.
Нужно написать запрос, который выбирает сумму первых 10 не удалённых платежей на каждом из абонентов. Данные из запроса должны помещаться в коллекцию, содержащую поля: clnt_id, subs_id, all_pay_sum.
По завершению выборки данных в коллекцию, необходимо вставить каждую третью запись из этой коллекции в таблицу test_data. Допускается использование вспомогательных объектов и конструкций для решения задачи.
Есть две таблицы test и test_log:
Название колонки | Описание колонки |
---|---|
n | Порядковый номер (Primary Key) |
Изначально в таблице test присутствует 23 записи с значением n от 1 до 23. В таблице test_log присутствует запись со значением n = 8.
Необходимо написать цикл от 1 до 23 (номер шага цикла обозначим i), который:
- Обновляет данные в таблице test для каждого n = i, устанавливая n = n - 1;
- Вставляет в таблицу test_log запись с n = i.
При этом должны выполняться следующие условия:
- Каждые 5 шагов должна выполняться фиксация изменений в таблицах.
- Изменения по тем шагам, которые имели ошибки, НЕ должны быть зафиксированы в таблицах.
Данное задание выполняется только после того, как были выполнены первые два задания и куратор подтвердил, что они выполнены хорошо и следует приступить к третьему. В определенных случаях выполнение этого задания может не потребоваться.
Задание творческое и предназначено для оценки того, как Вы самостоятельно можете выстраивать решения (архитектурно, алгоритмически, логически). Тут нет правильного варианта. Делайте так, как считаете верным.
Необходимо создать упрощенную структуру БД и пакет для следующего кейса:
У абонента есть следующие сущности:
- баланс – текущие средства, доступные абоненту
- платежи
- расходы
Абоненту необходимы возможности просмотра:
- состояния текущего баланса
- истории изменений баланса
Изменения баланса предполагается делать не напрямую, а через помещение данных об изменениях в какую-то промежуточную очередь или таблицу. Т.е. тот, кто меняет баланс должен писать данные в некоторую сущность, затем другой процесс забирает данные из этой сущности (по необходимости их агрегирует) и уже фиксирует эти изменения на балансе.
- Используется Oracle 12c R2