+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | | department | varchar | | managerId | int | +-------------+---------+ 在 SQL 中,id 是该表的主键列。 该表的每一行都表示雇员的名字、他们的部门和他们的经理的id。 如果managerId为空,则该员工没有经理。 没有员工会成为自己的管理者。
查询至少有5名直接下属的经理 。
以 任意顺序 返回结果表。
查询结果格式如下所示。
示例 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
输入: Employee 表: +-----+-------+------------+-----------+ | id | name | department | managerId | +-----+-------+------------+-----------+ | 101 | John | A | None | | 102 | Dan | A | 101 | | 103 | James | A | 101 | | 104 | Amy | A | 101 | | 105 | Anne | A | 101 | | 106 | Ron | B | 101 | +-----+-------+------------+-----------+ 输出: +------+ | name | +------+ | John | +------+
CodeDemo
1 2 3 4 5 6 7 8 9
# e1为员工表, e2为经理表 select name from ( select e2.name as name, count(*) as cnt from Employee e1, Employee e2 where e1.managerId = e2.id groupby e2.id ) as tmp where cnt >=5
+-------------+------+ | Column Name | Type | +-------------+------+ | x | int | | y | int | | z | int | +-------------+------+ (x, y, z)是该表的主键列。 该表的每一行包含三个线段的长度。
写一个SQL查询,每三个线段报告它们是否可以形成一个三角形。
以 任意顺序 返回结果表。
查询结果格式如下所示。
示例 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
输入: Triangle 表: +----+----+----+ | x | y | z | +----+----+----+ | 13 | 15 | 30 | | 10 | 20 | 15 | +----+----+----+ 输出: +----+----+----+----------+ | x | y | z | triangle | +----+----+----+----------+ | 13 | 15 | 30 | No | | 10 | 20 | 15 | Yes | +----+----+----+----------+
CodeDemo
1 2 3 4 5 6 7 8
# 首先想到的是if嵌套来判断, 然后开窗 # 三角形的成立条件是: 1, 两边之和大于第三边, 2, 两边之差小于第三边 select x, y, z, if(x+y>z andabs(x-y)<z ,'Yes',if(x+z>y andabs(x-z)<y,'Yes',if(y+z>x andabs(y-z)<x,'Yes', 'No'))) as triangle from Triangle