Зачем вам ранг, просто заказывайте сначала по deptno, затем по ename.
SELECT ename,position,deptno,
FROM emp
WHERE deptno in ('10','30')
ORDER BY DeptNo, Ename
Использование аналитической функции двух производных таблиц или CTE
Производная таблица / встроенное представление.
SELECT ename,position,deptno
FROM (select ename,position,deptno,dense_rank() over(partition by deptno order by ename asc) as rank
from emp
where deptno in ('10','30')) Z
ORDER BY deptNo, rank
Общее табличное выражение (CTE):
with Z AS (SELECT ename,position,deptno
, dense_rank() over(partition by deptno order by ename asc) as rank
FROM emp
WHERE deptno in ('10','30'))
SELECT ename,position,deptno
FROM z
ORDER BY deptno, rank
Оба эти последних 2 метода просто избегают выставления функции ранга внешнему запросу, в котором возвращаются результаты. Это «хитрости» и неоптимальное время выполнения. если нет особой причины иметь данные о ранге; Я бы не стал его использовать.