表: 雇员表 +------+--------------+ 字段名称 类型 +------+--------------+ 雇员编号 int 出生日期 date(255) 姓名 varchar(512) 性别 varchar(512) 雇用日期 date(255) +------+--------------+ 雇员编号 是该表的主键。 该表的每一行表示 一名雇员的信息,包含编号、出生日期、姓名、性别和雇用日期。 表: 薪水表 +------+-----------+ 字段名称 类型 +------+-----------+ 雇员编号 int 薪水 int 起始日期 date(255) 结束日期 date(255) +------+-----------+ 雇员编号、起始日期、结束日期 是该表的主键。 该表的每一行表示 一名雇员的薪水信息,包含编号、起始日期和结束日期。 编写一个 SQL 查询,查找当前所有雇员入职以来的薪水涨幅,给出雇员编号以及其对应的薪水涨幅。其中,薪水表中结束日期为2004-01-01的才是当前员工,否则是已离职员工。 查询结果如下例所示。 示例 1: 输入: 表:雇员表 +-------+------------+----+----+------------+ 雇员编号 出生日期 姓名 性别 雇用日期 +-------+------------+----+----+------------+ 10002 1976-09-09 小明 男 2001-08-02 10005 1973-08-07 小红 女 2001-09-09 10006 1980-08-28 小兰 女 2001-08-02 +-------+------------+----+----+------------+ 表:薪水表 +-------+-------+------------+------------+ 雇员编号 薪水 起始日期 结束日期 +-------+-------+------------+------------+ 10002 72527 2001-08-02 2003-01-01 10002 75432 2003-01-01 2004-01-01 10005 94692 2001-09-09 2003-01-01 10006 43311 2001-08-02 2004-01-01 +-------+-------+------------+------------+ 输出: +-------+------+ 雇员编号 薪水涨幅 +-------+------+ 10002 2905 10006 0 +-------+------+ 解释: 先计算出当前员工的“当前薪水”和“入职薪水”,再通过“雇员编号”进行表关联计算。
示例1

输入

CREATE TABLE `雇员表` 
(
    `雇员编号` INT,
    `出生日期` DATE,
    `姓名` VARCHAR(512),
    `性别` VARCHAR(512),
    `雇用日期` DATE
);
CREATE TABLE `薪水表` 
(
    `雇员编号` INT,
    `薪水` INT,
    `起始日期` DATE,
    `结束日期` DATE
);
-- 插入雇员表的数据
INSERT INTO `雇员表` (`雇员编号`, `出生日期`, `姓名`, `性别`, `雇用日期`) VALUES (10002, '1976-09-09', '小明', '男', '2001-08-02');
INSERT INTO `雇员表` (`雇员编号`, `出生日期`, `姓名`, `性别`, `雇用日期`) VALUES (10005, '1973-08-07', '小红', '女', '2001-09-09');
INSERT INTO `雇员表` (`雇员编号`, `出生日期`, `姓名`, `性别`, `雇用日期`) VALUES (10006, '1980-08-28', '小兰', '女', '2001-08-02');
-- 插入薪水表的数据
INSERT INTO `薪水表` (`雇员编号`, `薪水`, `起始日期`, `结束日期`) VALUES (10002, 72527, '2001-08-02', '2003-01-01');
INSERT INTO `薪水表` (`雇员编号`, `薪水`, `起始日期`, `结束日期`) VALUES (10002, 75432, '2003-01-01', '2004-01-01');
INSERT INTO `薪水表` (`雇员编号`, `薪水`, `起始日期`, `结束日期`) VALUES (10005, 94692, '2001-09-09', '2003-01-01');
INSERT INTO `薪水表` (`雇员编号`, `薪水`, `起始日期`, `结束日期`) VALUES (10006, 43311, '2001-08-02', '2004-01-01');

输出

雇员编号|薪水涨幅
10002|2905
10006|0
加载中...