zoukankan      html  css  js  c++  java
  • 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'
  • 相关阅读:
    WCF bindings comparison z
    DevExpress打印功能 z
    使用Topshelf 5步创建Windows 服务 z
    Log4net中的RollingFileAppender z
    Log4Net在Windows服务中不能记录日志 z
    dev 注册方法 z
    async callback z
    多窗体之间方法调用 z
    [JS6] 通过用户事件事件执行脚本
    [JS5] 利用onload执行脚本
  • 原文地址:https://www.cnblogs.com/zhangtu/p/14384791.html
Copyright © 2011-2022 走看看