Comment puis-je demander des informations sur le deuxième salaire en importance de tous les employés de ma table des employés?
Essaye ça:
SELECT max(salary)
FROM emptable
WHERE salary < (SELECT max(salary)
FROM emptable);
Réponse simple:
SELECT distinct(sal)
FROM emp
ORDER BY sal DESC
LIMIT 1, 1;
Vous n'obtiendrez que le deuxième salaire maximum.
Et si vous avez besoin d'une 3ème, 4ème ou Nième valeur, vous pouvez augmenter la première valeur suivie de LIMIT (n-1)
ie. pour le 4ème salaire: LIMIT 3, 1;
La plupart des autres réponses semblent être spécifiques à la base de données.
La requête SQL générale devrait être la suivante:
select
sal
from
emp a
where
N = (
select
count(distinct sal)
from
emp b
where
a.sal <= b.sal
)
where
N = any value
et cette requête devrait pouvoir fonctionner sur n'importe quelle base de données.
Essayez quelque chose comme:
SELECT TOP 1 compensation FROM (
SELECT TOP 2 compensation FROM employees
ORDER BY compensation DESC
) AS em ORDER BY compensation ASC
Essentiellement:
Si les salaires ne sont pas distincts, vous pouvez utiliser SELECT DISTINCT TOP ...
au lieu.
Peut-être devriez-vous utiliser DENSE_RANK
.
SELECT *
FROM (
SELECT
[Salary],
(DENSE_RANK()
OVER
(
ORDER BY [Salary] DESC)) AS rnk
FROM [Table1]
GROUP BY [Num]
) AS A
WHERE A.rnk = 2
Pour trouver le deuxième salaire maximum d'un employé,
SELECT MAX(salary) FROM employee
WHERE salary NOT IN (
SELECT MAX (salary) FROM employee
)
Pour trouver le premier et le deuxième salaire maximum de l'employé,
SELECT salary FROM (
SELECT DISTINCT(salary) FROM employee ORDER BY salary DESC
) WHERE rownum<=2
Ces requêtes fonctionnent bien parce que j'ai utilisé
select max(Emp_Sal)
from Employee a
where 1 = ( select count(*)
from Employee b
where b.Emp_Sal > a.Emp_Sal)
Oui, homme qui court.
// Pour sélectionner le nom de l'employé dont le salaire est le deuxième plus élevé
SELECT name
FROM employee WHERE salary =
(SELECT MIN(salary) FROM
(SELECT TOP (2) salary
FROM employee
ORDER BY salary DESC) )
Essaye ça:
SELECT
salary,
employeeid
FROM
employees
ORDER BY
salary DESC
LIMIT 2
Ensuite, prenez juste la deuxième rangée.
select distinct(t1.sal)
from emp t1
where &n=(select count(distinct(t2.sal)) from emp t2 where t1.sal<=t2.sal);
Sortie: Entrez la valeur pour n: si vous voulez la deuxième valeur la plus élevée, entrez 2; si vous voulez 5, entrez n = 3
select max(Salary) from Employee
where Salary
not in (Select Max(Salary) from Employee)
Essaye ça:
select max(Emp_Sal)
from Employee a
where 1 = ( select count(*)
from Employee b
where b.Emp_Sal > a.Emp_Sal)
select * from compensation where Salary = (
select top 1 Salary from (
select top 2 Salary from compensation
group by Salary order by Salary desc) top2
order by Salary)
qui vous donnera tous lignes avec le deuxième salaire le plus élevé, que quelques personnes peuvent partager
select max(sal) from emp
where sal not in (select max(sal) from emp )
OU
select max(salary) from emp table
where sal<(select max(salary)from emp)
select max(Salary) from Employee
where Salary
not in (Select top4 salary from Employee);
parce que la réponse est la suivante
max (5,6,7,8)
donc le 5ème record le plus élevé sera affiché, les quatre premiers ne seront pas considérés
select * from emp
where sal=(select min(sal) from
(select sal from(select distinct sal from emp order by sal desc)
where rownum<=n));
n peut être la valeur que vous voulez voir ......
vous pouvez voir tous les champs de la personne qui a le nième salaire le plus élevé * texte fort *
SELECT
TOP 1 salary
FROM
(
SELECT
TOP 2 salary
FROM
employees
) sal
ORDER BY
salary DESC;