MYSQLの給与表からn番目に高い給与を見つけるのを手伝ってくれる人
26 に答える
これを試してください。 n は、返したいn番目のアイテムになります
SELECT DISTINCT(Salary) FROM table ORDER BY Salary DESC LIMIT n,1
テーブルから n 番目の給与を見つけたい場合 (ここで n は、1 番目または 2 番目または 15 番目に高い給与のようなものである必要があります)
これは、n 番目の給与を検索するためのクエリです。
SELECT DISTINCT Salary FROM tblemployee ORDER BY Salary DESC LIMIT 1 OFFSET (n-1)
8 番目に高い給与を検索する場合、クエリは次のようになります。
SELECT DISTINCT Salary FROM tblemployee ORDER BY Salary DESC LIMIT 1 OFFSET 7
注: OFFSET は 0 番目の位置から始まるため、ここでは N-1 ルールを使用します。
n 番目に高い給与を取得するには、まず を使用してデータを並べ替え、次にwithORDER BY
を使用して n 番目に高いレコードを選択する必要があります。LIMIT
OFFSET
SELECT DISTINCT(salary) AS salary
FROM tbl_salary
ORDER BY salary DESC
LIMIT 1 OFFSET (n - 1);
SELECT * FROM Employee Emp1
WHERE (N-1) = (
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
外側のクエリによって処理された各レコードに対して、内側のクエリが実行され、現在の給与よりも給与が少ないレコードを持つレコードの数が返されます。2 番目に高い給与を探している場合、内部クエリが N-1 を返すとすぐにクエリが停止します。
最高の給料を見つける.
select MAX(Salary) from Employee;
2番目に高い給与を見つける.
クエリ-1
SELECT MAX(Salary) FROM Employee
WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee);
クエリ-2
select MAX(Salary) from Employee
WHERE Salary <> (select MAX(Salary) from Employee )
n 番目に高い給与を見つける
クエリ-1
SELECT * /*This is the outer query part */
FROM Employee Emp1
WHERE (N-1) = ( /* Subquery starts here */
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
クエリ-2
SELECT *
FROM Employee Emp1
WHERE (1) = (
SELECT COUNT(DISTINCT(Emp2.Salary))
FROM Employee Emp2
WHERE Emp2.Salary > Emp1.Salary)
SQL Server で TOP キーワードを使用して n 番目に高い給与
SELECT TOP 1 Salary
FROM (
SELECT DISTINCT TOP N Salary
FROM Employee
ORDER BY Salary DESC
) AS Emp
ORDER BY Salary
MySQL で n 番目に高い給与を見つける
SELECT Salary FROM Employee
ORDER BY Salary DESC LIMIT n-1,1
SQL Server で n 番目に高い給与を見つける
SELECT Salary FROM Employee
ORDER BY Salary DESC OFFSET N-1 ROW(S)
FETCH FIRST ROW ONLY
rownum を使用して Oracle で n 番目に高い給与を見つける
select * from (
select Emp.*,
row_number() over (order by Salary DESC) rownumb
from Employee Emp
)
where rownumb = n; /*n is nth highest salary*/
RANK を使用して Oracle で n 番目に高い給与を見つける
select * FROM (
select EmployeeID, Salary
,rank() over (order by Salary DESC) ranking
from Employee
)
WHERE ranking = N;
これを試して:
select MIN(sal) from salary where sal in
(select sal from salary order by sal desc limit 9)
5番目に高い給与を見つけるためにこれを試してください-
SELECT DISTINCT(column name) FROM table ORDER BY (column name) desc LIMIT 4,1
n番目の給与-
SELECT DISTINCT(column name) FROM table ORDER BY (column name) desc LIMIT n-1,1
私はphpmyadminパネルでそれを試しました..
n番目に高いものを指定したい場合は、ランク法を使用できます。
3 番目に高い値を取得するには、次を使用します。
SELECT * FROM
(SELECT @rank := @rank + 1 AS rank, salary
FROM tbl,(SELECT @rank := 0) r
order by salary desc ) m
WHERE rank=3
SELECT * FROM employe e1 WHERE n-1 = ( SELECT COUNT(DISTINCT(e2.salary)) FROM employe e2 WHERE e2.salary > e1.salary)
Where n = highest number of salary like 1,2,3
4 番目に高い給与の場合:
min(salary) from (hibernatepractice.employee e order by salary desc limit 4) から e1 として min(salary) を選択します。
n 番目に高い給与の場合:
min(salary) from (hibernatepractice.employee e order by salary desc limit n) から e1 として min(salary) を選択します。
SELECT DISTINCT(column_name)
FROM table_name
ORDER BY column_name DESC limit N-1,1;
ここで、N は n 番目に高い給与を表します。
3 番目に高い給与 :
SELECT DISTINCT(column_name)
FROM table_name
ORDER BY column_name DESC limit 2,1;
これは機能しますn 番目の最大数を見つけるには
SELECT
TOP 1 * from (SELECT TOP nth_largest_no * FROM Products Order by price desc) ORDER BY price asc;
5 番目に大きい数の場合
SELECT
TOP 1 * from (SELECT TOP 5 * FROM Products Order by price desc) ORDER BY price asc;
sql
給与が 3 番目に高い従業員のすべてのレコードを取得する場合は、次のクエリを使用できます。
テーブル名: 給料
select * from salary where salary =
(select distinct salary from salary order by salary desc limit 2,1)