表: 雇员表 +----------+--------------+ 字段名称 类型 +----------+--------------+ 雇员编号 int 出生日期 date(255) 名 varchar(512) 姓 varchar(512) 性别 varchar(512) 雇用日期 date(255) +----------+--------------+ 雇员编号 是该表的主键。 该表的每一行表示 每一个员工的信息,包含员工的姓名、雇用日期、性别、年龄等信息。 表: 雇员奖金表 +----------+--------------+ 字段名称 类型 +----------+--------------+ 雇员编号 int 接收日期 date(255) 奖金类型 varchar(512) +----------+--------------+ 雇员编号 是该表的主键。 雇员编号 是 “雇员表” 表中 雇员编号 的外键。 该表的每一行表示 给员工发放奖金的记录,包含员工编号、接收奖金日期、奖金类型。 奖金类型的值是 1,表示奖金金额为薪水的 10%。 2,表示奖金金额为薪水的 20%。 3,表示奖金金额为薪水的 30%。 表: 薪水表 +-------------+--------------+ 字段名称 类型 +-------------+--------------+ 雇员编号 INT 薪水 INT 起始日期 date(255) 结束日期 date(255) +-------------+--------------+ 雇员编号 是该表的主键。 雇员编号 是“雇员奖金表” 、 “雇员表” 表中 雇员编号 的外键。 该表的每一行表示员工发放薪水相关的信息,包含雇员编号、薪水、起始日期、结束日期。 结束日期 ='9999-01-01' 的数据表示是员工当前薪水。 编写一个SQL查询,查询查找雇员编号、名、姓、奖金类型、对应的当前薪水及奖金金额。 查询结果如下例所示。 示例 1: 输入: 表:雇员表 +-------+-----------+-----------+-----------+----+-------------+ 雇员编号 出生日期 名 姓 性别 雇用日期 +-------+-----------+-----------+-----------+----+-------------+ 10001 195392 Georgi Facello M 1986626 10002 196462 Bezalel Simmel F 19851121 10003 1959123 Parto Bamford M 1986828 10004 195451 Chirstian Koblick M 1986121 10005 1955121 Kyoichi Maliniak M 1989912 10006 1953420 Anneke Preusig F 198962 10007 1957523 Tzvetan Zielinski F 1989210 10008 1958219 Saniya Kalloufi M 1994915 10009 1952419 Sumant Peac F 1985218 10010 196361 Duangkaew Piveteau F 1989824 10011 1953117 Mary Sluis F 1990122 +-------+-----------+-----------+-----------+----+-------------+ 表:雇员奖金表 +-------+-----------+-------+ 雇员编号 接收日期 奖金类型 +-------+-----------+-------+ 10001 201011 1 10002 2010101 2 10003 2011123 3 10004 201011 1 +-------+-----------+-------+ 表:薪水表 +-------+-------+-----------+------------+ 雇员编号 薪水 起始日期 结束日期 +-------+-------+-----------+------------+ 10001 60117 1986626 1987626 10001 62102 1987626 1988625 10001 66074 1988625 1989625 10001 66596 1989625 1990625 10001 66961 1990625 1991625 10001 71046 1991625 1992624 10001 74333 1992624 1993624 10001 75286 1993624 1994624 10001 75994 1994624 1995624 10001 76884 1995624 1996623 10001 80013 1996623 1997623 10001 81025 1997623 1998623 10001 81097 1998623 1999623 10001 84917 1999623 2000622 10001 85112 2000622 2001622 10001 85097 2001622 2002622 10001 88958 2002622 999911 10002 72527 199683 199783 10002 72527 199783 199883 +-------+-------+-----------+------------+ 输出: +-----------+---------+--------+---------+---------+ 雇员编号 名 姓 奖金类型 薪水 +-----------+---------+--------+---------+---------+ 10001 Georgi Facello 1 88958 +-----------+---------+--------+---------+---------+
示例1
输入
CREATE TABLE 雇员表
(
雇员编号 INT,
出生日期 DATE,
名 VARCHAR(512),
姓 VARCHAR(512),
性别 VARCHAR(512),
雇用日期 DATE
);
CREATE TABLE 雇员奖金表
(
雇员编号 INT,
接收日期 VARCHAR(512),
奖金类型 VARCHAR(512) -- 注意这里的改动,将 DATE 改为 VARCHAR
);
CREATE TABLE 薪水表
(
雇员编号 INT,
薪水 INT,
起始日期 DATE,
结束日期 DATE
);
INSERT INTO 雇员表 (雇员编号, 出生日期, 名, 姓, 性别, 雇用日期) VALUES
(10001, '1953-09-02', 'Georgi', 'Facello', 'M', '1986-06-26'),
(10002, '1964-06-02', 'Bezalel', 'Simmel', 'F', '1985-11-21'),
(10003, '1959-12-03', 'Parto', 'Bamford', 'M', '1986-08-28'),
(10004, '1954-05-01', 'Chirstian', 'Koblick', 'M', '1986-12-01'),
(10005, '1955-01-21', 'Kyoichi', 'Maliniak', 'M', '1989-09-12'),
(10006, '1953-04-20', 'Anneke', 'Preusig', 'F', '1989-06-02'),
(10007, '1957-05-23', 'Tzvetan', 'Zielinski', 'F', '1989-02-10'),
(10008, '1958-02-19', 'Saniya', 'Kalloufi', 'M', '1994-09-15'),
(10009, '1952-04-19', 'Sumant', 'Peac', 'F', '1985-02-18'),
(10010, '1963-06-01', 'Duangkaew', 'Piveteau', 'F', '1989-08-24'),
(10011, '1953-11-07', 'Mary', 'Sluis', 'F', '1990-01-22');
INSERT INTO 雇员奖金表 (雇员编号, 接收日期, 奖金类型) VALUES
(10001, '2010-01-01', '1'),
(10002, '2010-10-01', '2'),
(10003, '2011-12-03', '3'),
(10004, '2010-01-01', '1');
INSERT INTO 薪水表 (雇员编号, 薪水, 起始日期, 结束日期) VALUES
(10001, 60117, '1986-06-26', '1987-06-26'),
(10001, 62102, '1987-06-26', '1988-06-25'),
(10001, 66074, '1988-06-25', '1989-06-25'),
(10001, 66596, '1989-06-25', '1990-06-25'),
(10001, 66961, '1990-06-25', '1991-06-25'),
(10001, 71046, '1991-06-25', '1992-06-24'),
(10001, 74333, '1992-06-24', '1993-06-24'),
(10001, 75286, '1993-06-24', '1994-06-24'),
(10001, 75994, '1994-06-24', '1995-06-24'),
(10001, 76884, '1995-06-24', '1996-06-23'),
(10001, 80013, '1996-06-23', '1997-06-23'),
(10001, 81025, '1997-06-23', '1998-06-23'),
(10001, 81097, '1998-06-23', '1999-06-23'),
(10001, 84917, '1999-06-23', '2000-06-22'),
(10001, 85112, '2000-06-22', '2001-06-22'),
(10001, 85097, '2001-06-22', '2002-06-22'),
(10001, 88958, '2002-06-22', '9999-01-01'),
(10002, 72527, '1996-08-03', '1997-08-03'),
(10002, 72527, '1997-08-03', '1998-08-03');
输出
雇员编号|名|姓|奖金类型|薪水
10001|Georgi|Facello|1|88958
加载中...