У меня есть имя кандидата в таблицеSalary like
+---------------+-----------+
| candidateID | Salary |
+---------------------------+
| 1 | 10000 |
| 2 | 12000 |
| 3 | 8000 |
| 4 | 5000 |
+---------------------------+
Я просто хочу написать запрос, чтобы узнать ранг моей зарплаты. Я пытаюсь использовать функции RANK() и DENSE_RANK() SQL, но не работает с mysql.
Выход, который я хочу, это
select candidateID,Salary,rank from candidateSalary where candidateID = 2
+---------------+-----------+------+
| candidateID | Salary | rank |
+---------------------------+------+
| 2 | 12000 | 1 |
+---------------------------+------+
если рейтинг кандидатов не равен 1 или 2, тогда рейтинг должен быть 3 всех остальных кандидатов.
Это возвращает эквивалент dense_rank()
:
select count(distinct cs.salary)
from candidateSalary cs
where cs.salary >= (select cs2.salary
from candidateSalary cs2
where cs2.candidateId = 2
);
Или если вы хотите этого для всех кандидатов:
select cs.*,
(select count(distinct cs.salary)
from candidateSalary cs2
where cs2.salary >= c2.salary
) as dense_rank
from candidateSalary cs;
вы можете использовать, как показано ниже:
select candidateID,MAX(Salary) as sallary,rank from candidateSalary where candidateID = 2
SELECT *, row_number() over (ordrer by salary desc) AS rnk FROM table