name salary
----- -----
mohan 500
ram 1000
dinesh 5000
hareesh 6000
mallu 7500
manju 7500
praveen 10000
hari 10000
Oracleを使用して、前述の表からn番目に高い給与を見つけるにはどうすればよいですか?
name salary
----- -----
mohan 500
ram 1000
dinesh 5000
hareesh 6000
mallu 7500
manju 7500
praveen 10000
hari 10000
Oracleを使用して、前述の表からn番目に高い給与を見つけるにはどうすればよいですか?
select *
from ( select s.*, rank() over (order by salary desc) as rownumber
from salary )
where rownumber = nth
「nth」の代わりに給与番号を渡します
select * from
(
select sal, rank() over (order by sal DESC/ASC) rnk
from emp
)
where rnk = 1/2/3/4/5/6/...;
M INT を宣言します。SET M=N-1; SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT M,1;
Try out following in Oracle:
SELECT *
FROM
(SELECT rownum AS rn,
a.*
FROM
(WITH DATA AS -- creating dummy data
( SELECT 'MOHAN' AS NAME, 200 AS SALARY FROM DUAL
UNION ALL
SELECT 'AKSHAY' AS NAME, 500 AS SALARY FROM DUAL
UNION ALL
SELECT 'HARI' AS NAME, 300 AS SALARY FROM DUAL
UNION ALL
SELECT 'RAM' AS NAME, 400 AS SALARY FROM DUAL
)
SELECT D.* FROM DATA D ORDER BY SALARY DESC
) A
)
WHERE rn = 3; -- specify N'th highest here (In this case fetching 3'rd highest)
Cheers!
n 番目に高い給与を取得するには、次のクエリを参照してください。このようにして、あなたは n 番目に高い給与を得ることができます。n 番目に低い給与のみを取得したい場合は、クエリで DESC を ASC に置き換える必要があります。
Sqlサーバー2012以降。Fetch、Offset、Sql サーバー ページについては、このリンクを参照してください。
Use AdventureWorks /* AdventureWorks 2014 DB*/
Select distinct(CommissionPct) from Sales.SalesPerson
order by CommissionPct desc OffSet 3 Rows Fetch next 1 Rows only
--This for 4Th highest value (N-1)
n 番目に高い給与を簡単な方法で選択する
SELECT emp_no, sal
FROM
(
select emp_no, sal, ROW_NUMBER() OVER (order by sal desc) RN
from emp
order by sal desc
)
WHERE RN = n;
ここで、n = 必要な n 番目の数値.....
グーグルでたくさんのものを見つけることができます
select *
from table_name T1
where Nth = (select count(distinct (T2.sal))
from table_name T2
where T1.sal <= T2.sal )