LeetCode-181.超过经理收入的员工

题目:

Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。
编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。

表: Scores
+----+-------+----+-------------+
| Id | Name   |Salary |ManagerId|
+----+-------+----+-------------+
| 1  | Joe    |70000  |3        |
| 2  | Henry  |80000  |4        |
| 3  | Sam    |60000  |NULL     |
| 4  | Max    |90000  |NULL     |
+----+-------+----+-------------+

返回如下结果

+---------------------+
|Employee 
+---------------------+
| 1
+---------------------+
添加表结构和数据
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee`  (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `Salary` decimal(10, 2) NULL DEFAULT NULL,
  `ManagerId` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

INSERT INTO `employee` VALUES (1, 'Joe', 70000.00, 3);
INSERT INTO `employee` VALUES (2, 'Henry', 80000.00, 4);
INSERT INTO `employee` VALUES (3, 'Sam', 60000.00, NULL);
INSERT INTO `employee` VALUES (4, 'Max', 90000.00, NULL);
思路:
# Id是连续的,数字是相等的
解答:
方法一:

SELECT
    a.Name as  Employee
FROM
    employee a,
    employee b 
WHERE
    a.managerId = b.Id 
    AND a.Salary > b.Salary
 

方法二:

 SELECT
    a.Name  as Employee
FROM
    employee a
    JOIN employee b ON a.managerId = b.Id 
WHERE
    a.Salary > b.Salary

你可能感兴趣的:(#,数据库,mysql,leetcode)