题
目
描
述
:
\color{blue}题目描述:
题目描述:
获取有奖金的员工相关信息。
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,
recevied 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’
输
入
描
述
:
\color{blue}输入描述:
输入描述:
无
输
出
描
述
:
\color{blue}输出描述:
输出描述:
思
路
分
析
:
\color{blue}思路分析:
思路分析:
使用case结构进行流程控制。
代 码 实 现 : \color{blue}代码实现: 代码实现:
select em.emp_no, em.first_name, em.last_name, eb.btype, sa.salary,
(
#按照指定规则,使用case结构进行流程控制
case eb.btype
WHEN 1 THEN sa.salary * 0.1
WHEN 2 THEN sa.salary * 0.2
ELSE sa.salary * 0.3 END
) as bonus
from employees as em
#内连接emp_bonus 表,获取btype字段
inner join emp_bonus as eb on em.emp_no = eb.emp_no
#内连接salaries 表,获取salary 字段
inner join salaries as sa on em.emp_no = sa.emp_no and sa.to_date = '9999-01-01';
博
客
推
荐
:
\color{blue}博客推荐:
博客推荐:
此题涉及到MySQL中的流程控制,请参考我的专栏:
MySQL从入门到精通之流程控制结构