表: 雇员表
+------+--------------+ | 字段名称 | 类型 | +------+--------------+ | 雇员编号 | 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 | +-------+------+ 解释: 先计算出当前员工的“当前薪水”和“入职薪水”,再通过“雇员编号”进行表关联计算。
