如何在mysql中找到第二高的薪水

时间:2016-03-01 05:22:52

标签: mysql sql

如何在mysql中找到第二高的薪水。 所有记录都找到第二高的薪水。

awk '
  BEGIN { FS="[][]" } # split into $1 (before "[") and $2 (between "[...]")
  { 
    split($1, fa1, ",") # split $1 into subfields by "," and store in array fa1
    split($2, fa2, ",") # split $2 into subfields by "," and store in array fa2
    # Output fields of interest
    print fa1[2], fa1[3], fa2[1], fa2[2]
  }' removed-apply.log.2016-02-19

这返回两个记录。我不知道有多少记录在第二高的薪水。

10 个答案:

答案 0 :(得分:3)

试试这个:

SELECT emp_name,salary 
FROM Employee
WHERE salary = (SELECT DISTINCT salary FROM Employee as emp1
                WHERE (SELECT COUNT(DISTINCT salary)=2 FROM Employee as emp2
                WHERE emp1.salary <= emp2.salary)) 
ORDER BY emp_name

答案 1 :(得分:2)

第一个有限制 -

SELECT SALARY FROM tbl_name ORDER BY SALARY DESC LIMIT 1,1 

第二个没有限制 -

SELECT MAX(SALARY) FROM tbl_name WHERE SALARY < (SELECT MAX(SALARY) FROM tbl_name)

答案 2 :(得分:2)

SELECT sal 来自emp 按命令DES DESC 限制1,1;

您只能获得第二个最高薪水。

如果您需要任何第3或第4或第N个值,您可以增加第一个值,然后是LIMIT(n-1),即。第四薪水:LIMIT 3,1;

答案 3 :(得分:1)

试试这个

SELECT MAX(SALARY)FROM tbl_name WHERE SALARY NOT IN(SELECT MAX(SALARY)FROM tbl_name)

答案 4 :(得分:1)

SELECT * FROM employee GROUP BY salary ORDER BY salary DESC LIMIT 1, 1 

首先查询第一个分组的薪水列(用于不同的记录)并按降序显示记录,然后应用限制功能(限制功能接受两个参数,第一个参数用于索引(从0开始),第二个参数用于记录多少个我们想要)。

如果您想获得第三高的薪水,只需更改下限值2,1,以此类推。

答案 5 :(得分:1)

select salary
from (
    select salary
    from Employee
    order by desc
    limit 2) as minimumTwoSalary
order by minimumTwoSalary.salary
limit 1;

答案 6 :(得分:1)

使用 GROUP BYORDER BY 会给你第二高的薪水,即使有两个相同的薪水

SELECT * FROM employee GROUP BY salary ORDER by salary DESC LIMIT 1,1

答案 7 :(得分:0)

使用它来找到第二高的薪水。

 SELECT * FROM tablename ORDER BY salary DESC LIMIT 1,1

限制中的第一位是跳过行,限制中的第二位是显示行。

对于第三高的员工,请在相同的情况下跳过两行,以找到员工的第n个薪水。

SELECT * FROM tablename ORDER BY salary DESC LIMIT 2,1

答案 8 :(得分:0)

使用以下查询获取第二或第 n 高的薪水。基本上, DENSE_RANK() 为分区或结果集中的每一行分配一个排名,排名值之间没有差距。

一行的排名比该行之前的不同排名值的数量增加一。

SELECT salary as highest_salary FROM 
(SELECT salary, DENSE_RANK() OVER( ORDER BY salary DESC) row_num FROM Employee) with_dense_rank
WHERE row_num = 2;

答案 9 :(得分:0)

您可以使用各种命令从表格中找到第二高的工资。这里我使用三个 SQL 查询从 MySQL 中的一个表中获取第二高的薪水。

  1. SELECT MAX(salary) FROM tableName WHEREsalary < (SELECT MAX(salary) FROM tableName);

  2. SELECT MAX(salary) FROM tableName WHEREsalary NOT IN (SELECT MAX(salary) FROM tableName);

3.SELECT * FROM tableName ORDER BYsalary DESC LIMIT 1,1;