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;
теперь как я могу группировать по депно и комиссии и только раздел по дептно.
КАК Я МОГУ ГРУППИРОВАТЬ ПО РАЗНЫМ СТОЛБЦАМ И НАЙТИ РАНГ ПО РАЗДЕЛЕНИЯМ ПО РАЗНЫМ СТОЛБЦАМ