SELECT empno, deptno
dense_rank() OVER (PARTITION BY deptno
ORDER BY sal NULLS LAST) SRLNO
FROM emp
WHERE deptno IN (10, 20)
group by empno, deptno --,sal
ORDER BY deptno, SRLNO;
Этот запрос не работал, потому что Sal
должен быть в группе по предложению.Может ли кто-нибудь объяснить, почему это так, и есть ли альтернатива, чтобы получить ранг в том же списке, не изменяя условие group by?Вы хотите упорядочить рейтинг только на основе зарплаты.
РЕДАКТИРОВАТЬ
Предположим, есть еще одно имя столбца в таблице emp, и я должен сгруппировать по deptno и commision и разделутолько по deptno, так что будет предложенный ответ:
SELECT empno, deptno,sum(sal)
dense_rank() OVER (PARTITION BY deptno
ORDER BY sal NULLS LAST) SRLNO
FROM emp
WHERE deptno IN (10, 20)
group by deptno,commision --,sal
ORDER BY deptno, SRLNO;
теперь, как я могу группировать по depno и commision и только разделить по deptno.
КАК МОЖНО Сгруппировать по РАЗНОЙ КОЛОННЕ И НАЙТИ РЕЙТИНГ НА ОСНОВЕ РАЗДЕЛА ПО РАЗНОЙ КОЛОННЕ