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