как установить ранг наибольшего значения

0

У меня есть имя кандидата в таблице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 всех остальных кандидатов.

  • 0
    Попробуйте с помощью SELECT *, row_number() over (ordrer by salary desc) AS rnk FROM table
  • 0
    MySQL не предоставляет row_number ()
Теги:
codeigniter
mysqli

2 ответа

0

Это возвращает эквивалент 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;
  • 0
    Первый запрос дает оценку отлично, но другие детали неверны. и второй запрос возвращает несколько строк.
  • 0
    @HarshwardhanSharma. , , Я не понимаю ваш комментарий. Какие еще детали в первом запросе? Он возвращает ровно одно значение. Второй возвращает значение для всех строк, поэтому, естественно, он возвращает несколько строк.
Показать ещё 3 комментария
0

вы можете использовать, как показано ниже:

select candidateID,MAX(Salary) as sallary,rank from candidateSalary where candidateID = 2
  • 0
    недопустимый SQL .. вы смешали агрегированный столбец с неагрегированным столбцом

Ещё вопросы

Сообщество Overcoder
Наверх
Меню