2015-11-01 2 views
-2

В одном из интервью у меня возник вопрос по запросу sql. Запроса для таблицы сотрудниковЗапрос по базе данных

ID  Name  Salary 
1  emp 1 10000 
2  emp 2 20000 
3  emp 3 30000 
4  emp 4 40000 
... 

я должен обновить сотрудник зарплату, как говорит, если она ниже 10000 прироста на 500 , если он находится в пределах от 10000 до 20000 обновления на 600 , если он находится в пределах от 20000 до 30000 обновлений по 700 и непрерывной до последней записи в таблице. В таблице сотни тысяч строк.

Как создать скрипт для этого?

+0

Отформатируйте данные. – qxg

+1

Кстати, в каком dbms вас попросили написать этот запрос? – pedram

+0

В запросе SQL Server задан вопрос. – Kanchan

ответ

2

Попробуйте как этот

UPDATE employee 
SET Salary= 
CASE WHEN Salary < 10000 THEN Salary + 500 
CASE WHEN Salary >= 10000 and Salary < 20000 then Salary+600 
CASE WHEN Salary >= 20000 and Salary < 30000 then Salary+700 
ELSE Salary END 
+0

, в котором dbms вы стреляете над запросом? – pedram

+0

Благодарим вас за ответ. Но в зарплате служащего можно, изменив в этом случае, сколько случаев я должен добавить в запрос. – Kanchan

1

Ваше описание не говорит, что делать, если зарплата выше 30000. Я предполагаю, что зарплата должна быть обновлена ​​на 800 в этом случае. С этой предпосылкой вы можете сделать:

SELECT *, (
    (Salary<10000)?(Salary+500):(
    (Salary>=10000 AND Salary < 20000)? (Salary + 600):(
    (Salary>=20000 AND Salary < 30000)? (Salary + 700): 
    (Salary + 800)) 
))) AS NewSalary FROM employee; 

Надеюсь, это даст вам представление.

Смежные вопросы