mysql复习(3):case when语句

1 case when语句语法

       case 变量
       when conditon1 then expr1
       when conditon2 then expr2
       ...
       else expr3
       end

1.2 牛客网实例

       给出emp_no、first_name、last_name、奖金类型btype、对应的当前薪水情况salary以及奖金金额bonus。 bonus类型btype为1其奖金为薪水salary的10%,btype为2其奖金为薪水的20%,其他类型均为薪水的30%。 当前薪水表示to_date='9999-01-01'。

 1 CREATE TABLE `employees` (
 2 `emp_no` int(11) NOT NULL,
 3 `birth_date` date NOT NULL,
 4 `first_name` varchar(14) NOT NULL,
 5 `last_name` varchar(16) NOT NULL,
 6 `gender` char(1) NOT NULL,
 7 `hire_date` date NOT NULL,
 8 PRIMARY KEY (`emp_no`));
 9 
10 create table emp_bonus(
11 emp_no int not null,
12 received datetime not null,
13 btype smallint not null);
14 
15 CREATE TABLE `salaries` (
16 `emp_no` int(11) NOT NULL,
17 `salary` int(11) NOT NULL,
18 `from_date` date NOT NULL,
19 `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`from_date`));

解法:

select e.emp_no, e.first_name, e.last_name, eb.btype, s.salary, (case eb.btype
    when 1 then s.salary * 0.1
    when 2 then s.salary * 0.2
    else s.salary * 0.3 end) as bonus
from employees e inner join salaries s
on e.emp_no = s.emp_no
inner join emp_bonus eb
on e.emp_no = eb.emp_no
where s.to_date = '9999-01-01'
原文地址:https://www.cnblogs.com/zhangtu/p/14384791.html