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. Может ли кто-нибудь объяснить, почему это так, и есть ли альтернатива получить ранг в одном и том же элементе без изменения предложения group by? U хочу заказать ранг только по зарплате.dense_rank() аналитическая функция в оракуле
EDIT
Предположим, что существует другое имя столбца комиссионной в EMP таблице, и я должен группе DEPTNO и комисси и раздела, 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.
КАК Я МОГУ GROUP BY ПО РАЗНЫЕ КОЛОНКА И НАШЛИ RANK НА ОСНОВЕ PARTITION BY ON COLUMN различно
: Спасибо за решение, но как я могу группа по с различными столбцами и найти ранг, основанный на другой раздел? –
@ user1138658 - Как я отредактировал, вы захотите использовать 'over' до конца, если у вас разные отличия. Как только вы направляетесь в мир «over», вы хотите избежать «group by» (это можно сделать, это просто очень сложно). – Eric
: Согласен Спасибо :) –