Скрыть столбец из запроса - PullRequest
0 голосов
/ 28 мая 2019

Я не хочу столбец ранга, но все же хочу получить данные в том же формате, применяя плотный ранг.

select ename,position,deptno,dense_rank() over(partition by deptno order by ename asc) as rank from emp  where deptno in ('10','30');

enter image description here

1 Ответ

2 голосов
/ 28 мая 2019

Зачем вам ранг, просто заказывайте сначала по 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 метода просто избегают выставления функции ранга внешнему запросу, в котором возвращаются результаты. Это «хитрости» и неоптимальное время выполнения. если нет особой причины иметь данные о ранге; Я бы не стал его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...