HI, 可以告诉我SQL命令的语法,该命令以员工表中存储的一系列薪金作为输出提供第二高薪水。 SQL commnd的说明将受欢迎... 请帮忙!!!用于查找第二高薪水的SQL命令
0
A
回答
1
with tempTable as(
select top 2 max(salary) as MaxSalary from employee order by salary desc
) select top 1 MaxSalary from tempTable
描述:
- 选择顶部2最大薪金
- 为了他们通过递减顺序(因此第二最高薪水现在是在顶部)
- 从选择顶部1
另一种方法:
select top 1 MaxSalary from (
select top 2 max(salary) as MaxSalary from employee order by salary desc
)
6
select min(salary) from
(select top 2 salary from SalariesTable order by salary desc)
as ax
0
您没有指定您正在使用的实际SQL产品,并且查询语言因产品而异。然而,这样的事情应该让你开始:
SELECT salary FROM employees E1
WHERE 1 = (SELECT COUNT(*) FROM employee E2 WHERE E2.salary > E1.salary)
(感谢fredt的更正)。
或者(和更快的在性能方面)会
SELECT TOP 2 salary FROM employees ORDER BY salary DESC
,然后跳过第一个返回的行。
5
这应该工作:
select * from (
select t.*, dense_rank() over (order by salary desc) rnk from employee t
) a
where rnk = 2;
这将返回第二高的薪水。
dense_rank() over
是一个窗口函数,它给你指定集合内特定行的等级。它的是标准SQL,如SQL:2003中所定义。
窗口函数是真棒一般来说,他们简单地解决了很多困难的查询。
稍有不同的溶液:
这是相同,除了返回薪水最高时,有一个并列号1:
select * from (
select t.*, row_number() over (order by salary desc) rnk from employee t
) a
where rnk = 2;
更新:变更秩DENSE_RANK和添加的第二可解。谢谢,IanC!
0
下面是一些示例代码,以概念证明:
declare @t table (
Salary int
)
insert into @t values (100)
insert into @t values (900)
insert into @t values (900)
insert into @t values (400)
insert into @t values (300)
insert into @t values (200)
;WITH tbl AS (
select t.Salary, DENSE_RANK() OVER (order by t.Salary DESC) AS Rnk
from @t AS t
)
SELECT *
FROM tbl
WHERE Rnk = 2
DENSE_RANK是强制性的(其他城市排名&你会看到)。
你还会明白为什么任何SELECT TOP 2查询都不起作用(无论如何都没有DISTINCT)。
0
一种替代(测试):
select Min(Salary) from (
select distinct TOP (2) salary from employees order by salary DESC) AS T
这将在任何平台上工作,是干净的,并且迎合多个并列#1薪金的可能性。
0
选择顶部1 *从雇员其中EMPID在(由薪金DESC从雇员顺序选择顶部2(EMPID))ORDER BY薪金ASC
说明:
选择顶部2(EMPID)从雇员顺序根据薪水,DESC将给出薪水最高的两个记录,然后整个查询将按升序排列这两个记录,然后列出两个中薪水最低的记录。
EX。让员工的薪水为100,99,98,50。
查询1将返回的人的EMP ID用Sal 100和99
所有查询将返回与具有人薪水99.
0
SELECT Salary,EmpName
FROM
(
SELECT Salary,EmpName,ROW_NUMBER() OVER(ORDER BY Salary) As Rank
FROM EMPLOYEE
) A
WHERE A.Rank=n;
的所有数据,其中n是数请求表格的最高工资。Ucan也可以使用DenseRank()函数代替ROW_NUMBER()。
感谢, 苏雷什
0
一个简单的方法..
select MAX(salary) as SecondMax from test where salary !=(select MAX(salary) from test)
相关问题
- 1. 第三高的薪水SQL
- 2. Sql查询找到更高的薪水
- 3. 用于查找第二高的SQL
- 4. 如何找到薪水第二高的员工?
- 5. 如何在mysql中找到第二高薪水
- 6. 如何找到第五最高的薪水在SQL Server中的单个查询
- 7. 获得第三高薪水的员工
- 8. SQL查询有关薪水最高找到
- 9. 如何找到在mysql中的第二和第三高的薪水,而无需使用子查询
- 10. 希望第二高的薪水,以便通过部门明智
- 11. 仅使用SQL将薪水提高15%?
- 12. 在dpt ID输入后获得第二高薪水
- 13. 用于查找数据库中第二大值的行的SQL命令
- 14. 我如何从员工表中找到第二大薪水?
- 15. 选择薪水最高
- 16. 使用ROW_NUMBER()查找Sql Server中的第二高
- 17. 我想列出所有的导师名字,其薪水高于平均工资,并显示薪水多大于
- 18. 基于第一个查找输出的第二次查找
- 19. 查询不会给确切的最高薪水的结果
- 20. 如何找到重复的薪水
- 21. 查找用于命令行卸载的SQL 2008 setup.exe
- 22. 如何用sql命令查找团队
- 23. 的Oracle SQL查询,显示同样的薪水
- 24. 用第二个查找表解码一个表的SQL查询
- 25. 查找二叉查找树的高度
- 26. 薪水PHP脚本
- 27. 使用gcloud命令行创建第二代Cloud SQL
- 28. Windows命令:基于第一命令
- 29. 如何找到所有最高的第五名受薪雇员在SQL Server中的单个查询
- 30. 从列表中查找薪水信息名称
的可能重复[SQL查询来发现从工资表第n个最高工资(http://stackoverflow.com/questions/3850034/sql-query-to-find-n-highest-salary-from-salary-table) – LittleBobbyTables 2010-11-28 14:23:58
另一个问题及其答案是针对SQL Server等的。所以这里的答案是TOP – fredt 2010-11-28 14:49:11