我得到一个雇员表,看起来像这样:
查询以创建示例输入。
CREATE TABLE employee(
empId INTEGER,
empName VARCHAR(20),
mgrId INTEGER,
salary DECIMAL(12,2)
);
INSERT INTO employee VALUES
(1, 'A', 2, 100),
(2, 'B', 4, 150),
(3, 'C', 4, 165),
(4, 'D', 7, 200),
(5, 'E', 6, 210),
(6, 'F', 7, 250),
(7, 'G', 7, 300),
(8, 'H', 6, 170);
链接到SQL Fiddle:http://sqlfiddle.com/#!9/cd4be8
此样本数据导致此层次结构。
每个员工都有一个直接上司。同样,将所有在给定雇员之上的雇员称为间接老板。在给定的样本中,A的直接老板是B,而C,D,E,F,G和H是A的间接老板。我需要找到两件事。
预期输出:
+---------+-------+
| empName | total |
+---------+-------+
| A | 7 |
| B | 3 |
| C | 3 |
| D | 1 |
| E | 3 |
| F | 1 |
| G | 0 |
| H | 3 |
+---------+-------+
预期输出:
+---------+------+
| empName | mgr |
+---------+------+
| A | D |
| B | G |
| C | NULL |
| D | NULL |
| E | NULL |
| F | NULL |
| G | NULL |
| H | NULL |
+---------+------+
说明:对于雇员A(薪水= 100),具有至少双倍薪水的间接老板是D(薪水= 200),F(薪水= 210)和G(薪水= 300)。但是由于D的薪水是D,F和G的最小值,所以结果是D。
很容易找到员工下属的人数,但反之则非常棘手。任何帮助/提示将不胜感激。
我希望您能找到以下答案,直到找到更理想的解决方案为止。