当前位置: 首页 > 面试题库 >

查找员工表MySQL的最高和第二最高薪水

芮化
2023-03-14
问题内容

假设您得到以下名为Employee的简单数据库表,该表具有2个列,分别名为Employee ID和Salary:

  Employee
  Employee ID    Salary
   3            200
   4            800
   7            450

我想写一个查询,从员工那里选择max(salary)作为max_salary,2nd_max_salary

然后它应该返回

  max_salary   2nd_max_salary
   800             450

我知道如何找到第二高的薪水

   SELECT MAX(Salary) FROM Employee
  WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )

或找到第n个

  SELECT FROM Employee Emp1 WHERE (N-1) = ( SELECT COUNT(DISTINCT(Emp2.Salary)) FROM Employee Emp2
  WHERE Emp2.Salary > Emp1.Salary)

但我无法弄清楚如何将这2个结果结合起来以获得所需的结果


问题答案:

您可以只运行2个查询作为内部查询以返回2列:

select
  (SELECT MAX(Salary) FROM Employee) maxsalary,
  (SELECT MAX(Salary) FROM Employee
  WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )) as [2nd_max_salary]

SQL小提琴演示



 类似资料:
  • 问题内容: 我指的是以下查询,以找到雇员的Nth最高薪水。 一位先生说,此查询有效。有人可以解释一下如何将COUNT(n等于1到X,其中X是不同工资总额)的值等于&n会产生这个结果吗? 我试图了解数据库如何在内部处理此查询并产生结果? 谢谢你。 问题答案: 首先,查询将返回 最低 薪水值。要返回最高薪水值,您必须更改为。 接下来,此查询的工作方式是:首先找到一个唯一的薪水值列表作为一个派生表,然后

  • 员工属于一个部门(外键=D_ID)。员工有一个SSN(主键)、姓名、工资和D_ID。

  • 问题内容: 假设有工资表: 我目前正在使用此代码(AutoIT脚本: 因此,如果Hour_number在低小时或高小时之间,那两个查询是完美的。我需要某种查询,它基本上会执行以下操作: 然后将其重复为“默认”,因为找不到该员工。 补充:如果仅通过1个查询未找到$ Employee,是否可以尝试使用“ Default”? 问题答案: 如果仅通过1个查询未找到$ Employee,是否可以尝试使用“

  • 我有一个表员工与字段部门,员工和工资。我想要一个查询,以列出部门最高工资和该工资的员工姓名。 我知道这很简单。我在谷歌上搜索,但找到了这样的答案,只列出了部门和工资

  • 问题内容: 我需要有一个清单,每个部门只有一名最高薪水雇员。allEmployees是源列表。 问题答案: 您可以使用分组收集器来做到这一点: 与静态导入 此代码创建了所有员工的,并在的帮助下将其与部门分组。对于分类为同一键的所有值,我们只需要保留薪水最高的员工,因此我们将其与进行比较,比较器会将薪金与进行比较。由于返回一个(以处理列表为空的情况),我们通过调用来包装它,并返回一个仅返回雇员的装订

  • 问题内容: 我正在尝试从员工列表中检索薪水最低的列表。到目前为止,我已经设法找到 了 薪水最低 的 员工,但是如果几个员工的薪水相同,我想检索多个员工。 我认为解决方案应该是一成不变的。因此,我无法创建一个薪水最低的变量,而只能检查每个薪水是否小于或等于Low_Salary。我尝试了一下,它奏效了。 因此,我相信我的问题是“ .min(比较器)”仅检索最低的一个。 问题答案: 首先创建一个,其关键