2016-09-07 2 views
2

запрос для третьей самой высокой заработной платы с использованием ранговой функцииТретья самая высокая заработная плата с использованием функции ранга в Postgres Sql

select * 
from (
    select emp_sal,row_number()over() as RANK 
    from (
     select emp_sal 
     from emp_demo 
     order by emp_sal desc 
    ) 
)K 
where K.RANK=3 

ошибка приходит в

*ERROR: subquery in FROM must have an alias 
LINE 1: ...m (select emp_sal,row_number()over() as RANK from (select em... 
                  ^
HINT: For example, FROM (SELECT ...) [AS] foo. 
********** Error ********** 
ERROR: subquery in FROM must have an alias 
SQL state: 42601 
Hint: For example, FROM (SELECT ...) [AS] foo. 
Character: 63* 

Я не в состоянии отобразить третий самую высокую зарплату в RazorSQL (также in Postgresql)

+1

Я думаю, сообщение об ошибке намекая, что нужно исправить, и вам не хватает 'как' перед вашим псевдонимом' k' в код 'from (выберите emp_sal из emp_demo order by emp_sal desc)) K'. Можете ли вы попробовать, если это поможет? – dubes

ответ

1

Вы, кажется, не указали содержание статьи over. Кроме того, вы, вероятно, следует использовать dense_rank и не row_number в случае, если несколько сотрудников имеют одинаковую зарплату:

SELECT * 
FROM (SELECT *, DENSE_RANK() OVER (ORDER BY emp_sal DESC) AS rk 
     FROM emp_demo) t 
WHERE rk = 3 
+0

.. Спасибо за ответ. На самом деле я пробовал использовать dense_rank, но результат не наступил, поэтому я подумал, что лучше начать с базового, поэтому я использовал row_number() .. все еще была ошибка ... поэтому я опубликовал здесь вопрос .. спасибо за логику .... Он работает сейчас .. – user2715085

Смежные вопросы