首页 > 数据库技术 > 详细

[oracle]巧用 CASE WHEN

时间:2020-06-28 17:18:31      阅读:63      评论:0      收藏:0      [点我收藏+]
①巧用 CASE WHEN 进行统计
 
来看看如何巧用 CASE WHEN 进行定制化统计,假设我们有如下的需求,希望根据左边各个市的人口统计每个省的人口:
技术分享图片

 

 

使用 CASE WHEN 如下:
SELECT CASE pref_name
      WHEN 长沙 THEN 湖南 
      WHEN 衡阳 THEN 湖南
      WHEN 海口 THEN 海南 
      WHEN 三亚 THEN 海南
    ELSE 其他 END AS district,
    SUM(population)
FROM PopTbl
GROUP BY district;

 

 
②巧用 CASE WHEN 进行更新
 
现在某公司员人工资信息表如下:
技术分享图片

 

 

现在公司出台了一个奇葩的规定:
  • 对当前工资为 1 万以上的员工,降薪 10%。
  • 对当前工资低于 1 万的员工,加薪 20%。
 
一些人不假思索可能写出了以下的 SQL:

--条件1
UPDATE Salaries
SET salary = salary * 0.9 WHERE salary >= 10000;
--条件2
UPDATE Salaries
SET salary = salary * 1.2
WHERE salary < 10000;

 

 
这么做其实是有问题的, 什么问题,对小明来说,他的工资是 10500,执行第一个 SQL 后,工资变为 10500*0.9=9450, 紧接着又执行条件 2, 工资变为了 9450*1.2=11340,反而涨薪了!
 
如果用 CASE WHEN 可以解决此类问题,如下:
 
UPDATE Salaries
SET salary = CASE WHEN salary >= 10000 THEN salary * 0.9
WHEN salary < 10000 THEN salary * 1.2
ELSE salary END;

 

 

[oracle]巧用 CASE WHEN

原文:https://www.cnblogs.com/garrett7/p/13203934.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!