如何在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
这返回两个记录。我不知道有多少记录在第二高的薪水。
答案 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 BY
和 ORDER 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 中的一个表中获取第二高的薪水。
SELECT MAX(salary) FROM tableName WHEREsalary < (SELECT MAX(salary) FROM tableName);
SELECT MAX(salary) FROM tableName WHEREsalary NOT IN (SELECT MAX(salary) FROM tableName);
3.SELECT * FROM tableName ORDER BYsalary DESC LIMIT 1,1;