Установление комиссии для сотрудников в зависимости от должности - PullRequest
0 голосов
/ 21 января 2019

Я только начал изучать некоторые sql, и я использую базу данных Oracle 11g.Вопрос, который у меня возник, заключается в том, что у меня есть штатное расписание, где я пытаюсь обновить комиссию для каждого персонала в зависимости от положения персонала.Я хотел обновить комиссию для постоянных сотрудников до 0,04 (4%) и 0,05 (5%) для менеджеров.

Есть ли способ сделать все это в одном утверждении?

Я просто обновил всю комиссию по персоналу:

UPDATE staff SET commission = 0.04;

, а затем сделал еще одно заявление об обновлении, чтобы обновить только менеджер

UPDATE staff SET commission = 0.05 WHERE position = 'Manager';

.линии этого, однако, это не будет работать LOL.

UPDATE staff SET commission = 0.04 WHERE NOT position = 'Manager' AND SET commission = 0.05
WHERE position = 'Manager';

Спасибо за вашу помощь!высоко ценится!

Ответы [ 3 ]

0 голосов
/ 21 января 2019

Более гибкий подход состоит в том, чтобы иметь таблицу должностей, содержащую зависящие от должности данные.

CREATE TABLE position
(
    PositionID NUMBER(10) NOT NULL,
    Position NVARCHAR2(50) NOT NULL,
    Commission NUMBER(8, 4) NOT NULL
);

Каждый сотрудник затем будет ссылаться на должность через столбец

PositionID NUMBER(10) NOT NULL

Тогда вы бытребуется только обновить комиссию в таблице позиций

UPDATE position SET Commission = 0.05 WHERE Position = 'Manager';

Это позволяет легко различать более двух позиций.

Также см .: Oracle / PLSQL: внешние ключи .

0 голосов
/ 21 января 2019

В Oracle декодирование - это удобный короткий путь:

 UPDATE staff
 SET commission = DECODE(position, 'Manager', 0.05, 0.04);
0 голосов
/ 21 января 2019

Вы можете использовать выражение CASE здесь:

UPDATE staff
SET commission = CASE WHEN position = 'Manager'
                      THEN 0.05
                      ELSE 0.04 END;

Это предполагает, что вы действительно хотите выполнить общее задание каждому не-менеджеру с комиссией 0,04.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...