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'
  • 相关阅读:
    Mysql-windows安装
    go-jwt生成token
    github下载慢的问题
    mysql主从复制(二)
    软件下载网站推荐
    Ubuntu14.04 安装ssh
    Ubuntu14.04 更换镜像源
    docker安装记录
    k8s安装记录
    Docker(一):Docker入门教程
  • 原文地址:https://www.cnblogs.com/zhangtu/p/14384791.html
Copyright © 2011-2022 走看看