员工表有5个字段,分别为pno,工号,name,姓名,hiredate,入职日期,sal,员工薪水,tno部门编号,这5个字段,请自行编写mysql语句进行建表并插入合适的值。求出每个部门工资最高的前三名员工,并计算这些员工的工资占所属部门总工资的百分比。
CREATE TABLE employee (
pno INT PRIMARY KEY,
name VARCHAR(50),
hiredate DATE,
sal DECIMAL(10, 2),
tno INT
);
-- 插入值
INSERT INTO employee (pno, name, hiredate, sal, tno)
VALUES
(1, 'John Doe', '2021-01-10', 5000.00, 1),
(2, 'Jane Smith', '2021-02-15', 6000.00, 1),
(3, 'Mike Johnson', '2021-03-20', 5500.00, 2),
(4, 'Lisa Brown', '2021-04-25', 6500.00, 2),
(5, 'David Lee', '2021-05-30', 7000.00, 1),
(6, 'Amy Johnson', '2021-06-05', 5500.00, 2),
(7, 'Michael Smith', '2021-07-10', 6000.00, 2),
(8, 'Emily Brown', '2021-08-15', 6500.00, 1),
(9, 'Daniel Clark', '2021-09-20', 7000.00, 1),
(10, 'Sophia Lee', '2021-10-25', 7500.00, 2);
SELECT pno,tno, name, sal,
ROUND((sal / total_sal), 2) AS percentage,
`rank`,
total_sal AS department_total_sal
FROM (
SELECT pno,tno, name, sal,
SUM(sal) OVER (PARTITION BY tno) AS total_sal,
ROW_NUMBER() OVER (PARTITION BY tno ORDER BY sal DESC) AS `rank`
FROM employee
) subquery
WHERE `rank` <= 3;