Skip to content

alesana-san/homework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Домашнее задание

Пояснение по заданиям

Ускорение изменения данных, уменьшение числа проходов, количества переменных и прочая оптимизация кода – приветствуются, а для специалистов высокого уровня настоятельно рекомендуется. Это поможет в полной мере понять Ваш уровень, как разработчика и на собеседовании уже этот вопрос не поднимать.

Задание №1

Есть таблица 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. Допускается использование вспомогательных объектов и конструкций для решения задачи.

Задание №2

Есть две таблицы test и test_log:

Название колонки Описание колонки
n Порядковый номер (Primary Key)

Изначально в таблице test присутствует 23 записи с значением n от 1 до 23. В таблице test_log присутствует запись со значением n = 8.

Необходимо написать цикл от 1 до 23 (номер шага цикла обозначим i), который:

  1. Обновляет данные в таблице test для каждого n = i, устанавливая n = n - 1;
  2. Вставляет в таблицу test_log запись с n = i.

При этом должны выполняться следующие условия:

  1. Каждые 5 шагов должна выполняться фиксация изменений в таблицах.
  2. Изменения по тем шагам, которые имели ошибки, НЕ должны быть зафиксированы в таблицах.

Задание №3

Данное задание выполняется только после того, как были выполнены первые два задания и куратор подтвердил, что они выполнены хорошо и следует приступить к третьему. В определенных случаях выполнение этого задания может не потребоваться.

Задание творческое и предназначено для оценки того, как Вы самостоятельно можете выстраивать решения (архитектурно, алгоритмически, логически). Тут нет правильного варианта. Делайте так, как считаете верным.

Необходимо создать упрощенную структуру БД и пакет для следующего кейса:

У абонента есть следующие сущности:

  • баланс – текущие средства, доступные абоненту
  • платежи
  • расходы

Абоненту необходимы возможности просмотра:

  • состояния текущего баланса
  • истории изменений баланса

Изменения баланса предполагается делать не напрямую, а через помещение данных об изменениях в какую-то промежуточную очередь или таблицу. Т.е. тот, кто меняет баланс должен писать данные в некоторую сущность, затем другой процесс забирает данные из этой сущности (по необходимости их агрегирует) и уже фиксирует эти изменения на балансе.

Примечания

  • Используется Oracle 12c R2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages