当前位置:首页 » 编程语言 » sql工资前三高怎么找
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql工资前三高怎么找

发布时间: 2023-04-14 11:19:43

1. 编写一个 sql 查询,找出每个部门工资前三高的员工

Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id 。

+----+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Janet | 69000 | 1 |
| 6 | Randy | 85000 | 1 |
+----+-------+--------+--------------+
Department 表包含公司所有部门的信息。

+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+
编写一个 SQL 查询,找出每个部门工资前三高的员工。例如,根据上述给定的表格,查询结果应返回:

+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 70000 |
| Sales | Henry | 80000 |
| Sales | Sam | 60000 |
+------------+----------+--------+

Sql如下:
SELECT
d.Name Department,e1.Name Employee,e1.Salary Salary
FROM
Employee e1,
Employee e2 ,
Department d
WHERE
e1.DepartmentId = e2.DepartmentId
AND e1.Salary <= e2.Salary
and e1.DepartmentId=d.Id
group by e1.id
having count(DISTINCT e2.Salary)<=3
order by d.Name,e1.Salary desc

2. sql查询:部门工资前三高的员工和部门工资最高的员工

Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id 。

+------+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+------+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Randy | 85000 | 1 |
+------+-------+--------+--------------+

Department 表包含公司所有部门的信息。
+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+

编写一个 SQL 查询,找出每个部门工资前三高的员工。
例如,根据上述给定的表格,查询结果应返回:
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 70000 |
| Sales | Henry | 80000 |
| Sales | Sam | 60000 |
+------------+----------+--------+

不妨假设e1=e2=[6,5,4,3],则子查询的过程如下:
1、e1.Salary=3;则e2.Salary可以取4、5、6;COUNT(DISTINCT e2.Salary)=3
2、e1.Salary=4;则e2.Salary可以取5、6;COUNT(DISTINCT e2.Salary)=2
3、e1.Salary=5;则e2.Salary可以取6;COUNT(DISTINCT e2.Salary)=1
4、e1.Salary=6;则e2.Salary无法取值;COUNT(DISTINCT e2.Salary)=0
则要令COUNT(DISTINCT e2.Salary) < 3 的情况有上述的4、3、2.
也即是说,这等价于取e1.Salary最大的三个值。

3. 经典面试题-大厂SQL题目

正确答案:

正确答案:

给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。

正确答案:

Customers 表:

Orders 表:

例如给定上述表格,你的查询应返回:

正确答案:

例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。

正确答案:

或者

例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):

正确答案:

例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。

正确答案:

示例:

假如数据输入的是上表,则输出结果如下:

注意:
如果学生人数是奇数,则不需要改变最后一个同学的座位。
正确答案:

例如,根据上述给定的 Weather 表格,返回如下 Id:

正确答案:

Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。

Department 表包含公司所有部门的信息。

编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。

正确答案:

表1: Person

PersonId 是上表主键

表2: Address

AddressId 是上表主键

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

FirstName, LastName, City, State

正确答案:

注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。
例如:

运行你所编写的更新语句之后,将会得到以下表:

正确答案:

这里有张 World 表

如果一个国家的面积超过300万平方公里,或者人口超过2500万,那么这个国家就是大国家。
编写一个SQL查询,输出表中所有大国家的名称、人口和面积。
例如,根据上表,我们应该输出:

正确答案:

Id 是这个表的主键。

例如,在运行你的查询语句之后,上面的 Person 表应返回以下几行:

正确答案:

Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id 。

Department 表包含公司所有部门的信息。

编写一个 SQL 查询,找出每个部门工资前三高的员工。例如,根据上述给定的表格,查询结果应返回:

正确答案

例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

正确答案:

例如,下表 cinema:

对于上面的例子,则正确的输出是为:

正确答案:

请列出所有超过或等于5名学生的课。
例如,表:

应该输出:

Note:
学生在每个课中不应被重复计算。

正确答案:

Users 表存所有用户。每个用户有唯一键 Users_Id。Banned 表示这个用户是否被禁止,Role 则是一个表示(‘client’, ‘driver’, ‘partner’)的枚举类型。

写一段 SQL 语句查出 2013年10月1日 至 2013年10月3日 期间非禁止用户的取消率。基于上表,你的 SQL 语句应返回如下结果,取消率(Cancellation Rate)保留两位小数。

正确答案

示例:

根据以上输入,你的查询应返回以下结果:

说明:所有电子邮箱都是小写字母。

正确答案:

请编写一个查询语句,找出高峰期时段,要求连续三天及以上,并且每天人流量均不少于100。
例如,表 stadium:

对于上面的示例数据,输出为:

Note:
每天只有一行记录,日期随着 id 的增加而增加。

正确答案: