1

こんにちは、次のデータベース スキーマがあります。

employee (employee-name, street, city)
    works (employee-name, company-name, salary)
    company (company-name, city)
    manages (employee-name, manager-name)

給与が $100,000 を超えない限り、First Bank Corporation のすべてのマネージャーに 10% の昇給を与える。そのような場合は、3 パーセントの昇給のみを行います。

上記の質問に対して、次のクエリを書きました。

UPDATE works w, manages m
SET w.salary += (salary * 0.10)
WHERE w.employee-name = m.manager-name
AND w.company-name = ‘First Bank Corporation’

しかし、クエリからわかるように、給与が $100000 を超える場合はチェックしていません。誰でもその方法を教えてもらえますか?

4

3 に答える 3

0
SET w.salary *= case when salary > 1000000 then 1.03 else 1.10 end
于 2013-03-20T09:44:07.280 に答える
0

私があなたを正しく理解している場合、レイズ後に100Kを超えない場合は、10%のレイズが必要です。その場合は、このクエリを使用してください。

UPDATE works w, manages m
SET w.salary += salary * case when salary+salary*0.10 > 1000000 then 0.03 else 0.10 end
WHERE w.employee-name = m.manager-name
AND w.company-name = ‘First Bank Corporation’

現在100K未満の場合、10%のレイズが必要な場合は、以下を使用します。

UPDATE works w, manages m
SET w.salary += salary * case when salary > 1000000 then 0.03 else 0.10 end
WHERE w.employee-name = m.manager-name
AND w.company-name = ‘First Bank Corporation’
于 2013-03-20T09:46:10.423 に答える
0

ケースステートメントを追加する必要があります

UPDATE works w, manages m
SET w.salary = (CASE
WHEN (w.salary * 0.10) < 100000 THEN w.salary + (salary * 0.10)
ELSE w.salary + (salary * 0.03)
END CASE)
WHERE w.employee-name = m.manager-name
AND w.company-name = ‘First Bank Corporation’
于 2013-03-20T09:46:53.167 に答える