Рубрики

ВОРОТА | Gate IT 2005 | Вопрос 67

Компания ведет учет продаж, совершенных ее продавцами, и выплачивает им комиссионные на основе общего объема продаж каждого человека за год. Эти данные хранятся в таблице со следующей схемой: salesinfo = (salespersonid, totalalsales, комиссионные). В определенный год, благодаря лучшим деловым результатам, компания решает дополнительно вознаграждать своих продавцов, увеличивая комиссионные, выплачиваемые им, согласно следующему формула: если комиссия <= 50000, увеличьте ее на 2%
Если 50000 <комиссия <= 100000, увеличьте ее на 4%
Если комиссия> 100000, увеличьте ее на 6%. ИТ-специалисты написали три различных сценария SQL, чтобы рассчитать улучшение для каждого сляба, каждый из этих сценариев должен выполняться как отдельная транзакция следующим образом:

 T1
Update salesinfo
Set commission = commission * 1.02
Where commission < = 50000;

 

 T2
Update salesinfo
Set commission = commission * 1.04
Where commission > 50000 and commission is < = 100000;

 

 T3
Update salesinfo
Set commission = commission * 1.06
Where commission > 100000;

 

Какой из следующих вариантов выполнения этих транзакций будет корректно обновлять комиссию всех продавцов
(A) Выполнить T1, затем T2, а затем T3
(B) выполнить T2, а затем T3; T1 работает одновременно во всем
(C) выполнить T3, а затем T2; T1 работает одновременно во всем
(D) Выполнить T3, затем T2, а затем T1

Ответ: (D)
Пояснение: за T3 следует T2, за которым следует T1

Если эта последовательность не соблюдается, то может случиться так, что Офицер одной плиты получит двойную выгоду.

Скажем, у офицера комиссия 99,999, он должен получить обновленную комиссию согласно T2. Но тогда

Рекомендуемые посты:

ВОРОТА | Gate IT 2005 | Вопрос 67

0.00 (0%) 0 votes