美文网首页
牛客SQL59 获取有奖金的员工相关信息。

牛客SQL59 获取有奖金的员工相关信息。

作者: jiaway | 来源:发表于2021-11-03 15:10 被阅读0次

题目描述

描述
获取有奖金的员工相关信息。
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
create table emp_bonus(
emp_no int not null,
received datetime not null,
btype smallint not null);
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`from_date`));
给出emp_no、first_name、last_name、奖金类型btype、对应的当前薪水情况salary以及奖金金额bonus。 bonus类型btype为1其奖金为薪水salary的10%,btype为2其奖金为薪水的20%,其他类型均为薪水的30%。 当前薪水表示to_date='9999-01-01'
输出格式:
emp_no  first_name  last_name   btype   salary  bonus
10001   Georgi  Facello 1   88958   8895.8
10002   Bezalel Simmel  2   72527   14505.4
10003   Parto   Bamford 3   43311   12993.3
10004   Chirstian   Koblick 1   74057   7405.7

sql答案 case when then 的语法应用

select e.emp_no,e.first_name,e.last_name,eb.btype,s.salary,
case 
    when eb.btype = 1 then s.salary * 0.1
    when eb.btype =2 then s.salary * 0.2
    else s.salary * 0.3
end  bonus
FROM 
employees as e,emp_bonus as eb,salaries as s
where e.emp_no = eb.emp_no and eb.emp_no = s.emp_no
and s.to_date = '9999-01-01'

相关文章

网友评论

      本文标题:牛客SQL59 获取有奖金的员工相关信息。

      本文链接:https://www.haomeiwen.com/subject/koyynktx.html