mysql - 複数 - sql 結合 order by
MySQLテーブルで2番目に高い値を取得する (19)
* N *番目の最も高い値を得るには、このソリューションを使用することをお勧めします。
SELECT * FROM `employees` WHERE salary =
(SELECT DISTINCT(salary) FROM `employees`
ORDER BY salary DESC LIMIT {N-1},1);
またはあなたと試すことができます:
SELECT * FROM `employees` e1 WHERE
(N-1) = (SELECT COUNT(DISTINCT(salary))
FROM `employees` e2
WHERE e1.salary < e2.salary );
2番目に高いN = 2、3番目に高いN = 3など。
私は従業員と給与のテーブルをそのように定義しています:
"name" (type: VARCHAR)
"salary" (type: INTEGER)
このテーブルで2番目に高い給与を得るためにどのようなクエリを使用できますか?
2番目、3番目、4番目......次のクエリを使用してN番目に高い給与を得る
SELECT MIN(salary) from employees WHERE salary IN( SELECT TOP N salary FROM employees ORDER BY salary DESC)
2番目の最高給与ではN = 2、3番目に高い給与ではN = 3など、Nをあなたの番号で置き換えます。 したがって、2番目に高い給与使用
SELECT MIN(salary) from employees WHERE salary IN( SELECT TOP 2 salary FROM employees ORDER BY salary DESC)
2番目に高い給与
select max(salary) from salary where salary not in (select top 1 salary from salary order by salary desc)
3番目に高い給料
select max(salary) from salary where salary not in (select top 2 salary from salary order by salary desc)
等々......
2番目に高い給与を得るには、以下のクエリを使用してください
SELECT salary FROM employees
ORDER BY salary DESC LIMIT 1,1;
n番目の最大給与を得るためにこれを試してみてください
私は転記する前にこれを試した&それはうまく動作します
例えば。 10番目の最大給与交代限度9,1を見つける。
mysql> select name,salary from emp group by salary desc limit n-1,1;
これを試して :
SELECT DISTINCT(`salary`)
FROM `employee`
ORDER BY `salary` DEC
LIMIT 1,1
これは下記のクエリを使用することができます
SELECT emp.name, emp.salary
FROM employees emp
WHERE 2 = (SELECT COUNT(DISTINCT salary)
FROM employees
WHERE emp.salary<=salary
);
2を希望の最高記録に変更することができます。
これを試して :
Proc sql;
select employee, salary
from (select * from test having salary < max(salary))
having salary = max(salary)
;
Quit;
マークの次に大きな値を持つレコードを表示するには:
SELECT username, mark
FROM tbl_one
WHERE mark = (
SELECT DISTINCT mark
FROM tbl_one
ORDER by mark desc
LIMIT 1,1
);
二番目に高い給与に対する真正面の答え
SELECT name, salary
FROM employees ORDER BY `employees`.`salary` DESC LIMIT 1 , 1
別の興味深い解決策
SELECT salary
FROM emp
WHERE salary = (SELECT DISTINCT(salary)
FROM emp as e1
WHERE (n) = (SELECT COUNT(DISTINCT(salary))
FROM emp as e2
WHERE e1.salary <= e2.salary))
私はこの質問に答えるのにかなり遅れているようだ。 同じ出力を得るにはこのライナーはいかがですか?
SELECT DISTINCT salary FROM employees ORDER BY salary DESC LIMIT 1,1 ;
簡単な解決策
SELECT * FROM TBLNAME ORDER BY COLNAME ASC LIMIT (n - x), 1
注:n =列内のレコードの総数
x = value 2nd, 3rd, 4th highest etc
例えば
//to find employee with 7th highest salary
n = 100
x = 7
SELECT * FROM tbl_employee ORDER BY salary ASC LIMIT 93, 1
お役に立てれば
SELECT MAX(salary) salary
FROM tbl
WHERE salary <
(SELECT MAX(salary)
FROM tbl);
SELECT MIN(id) as id FROM students where id>(SELECT MIN(id) FROM students);
SELECT name, salary
FROM EMPLOYEES
WHERE salary = (
SELECT DISTINCT salary
FROM EMPLOYEES
ORDER BY salary DESC
LIMIT 1 , 1 )
SELECT name, salary
FROM employees
order by salary desc limit 1,1
このクエリはあなたの仕事をするはずです。 まず、降順でテーブルをソートしています。そのため、最高給与の人がトップになり、2番目に高いのが第2ポジションになります。 今度limit a,b
要素の開始をスキップして、次のb
要素を出力することを意味します。 この場合は、 limit 1,1
を使用する必要があります。
お役に立てれば。
SELECT name,salary FROM employee
WHERE salary = (SELECT DISTINCT(salary) FROM employee ORDER BY salary DESC LIMIT 1,1) ORDER BY name
SELECT username, salary
FROM tblname
GROUP by salary
ORDER by salary desc
LIMIT 0,1 ;
with alias as
(
select name,salary,row_number() over(order by salary desc ) as rn from employees
)
select name,salary from alias where rn=n--n being the nth highest salary