Oracle 从查询中隐藏列
我不想要秩列,但仍然希望通过应用稠密秩以相同的格式显示数据Oracle 从查询中隐藏列,oracle,Oracle,我不想要秩列,但仍然希望通过应用稠密秩以相同的格式显示数据 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 emp WHERE deptno in
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 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):
最后两种技术都避免了将rank函数公开给返回结果的外部查询。它们是“技巧”和次优执行时间。除非有特殊原因需要排名数据;我不会用它。为什么你需要排名?先按德普诺排序,然后再按艾娜排序
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):
最后两种技术都避免了将rank函数公开给返回结果的外部查询。它们是“技巧”和次优执行时间。除非有特殊原因需要排名数据;我不会使用它。该查询将始终为秩返回1。你应该按员工点菜吗?@RossBush.不,我不是。然而,我已经尝试过了,它给我的排名像10部门的1,2,3和30部门的1,2,3,4,5,6。你可以发布样本数据。你是按分区排序的。在稠密_列中,记录将按照您的顺序(在分区内)给定一个顺序值。怎么可能只有1?@RossBush…请检查问题中的样本数据。该查询将始终返回1作为排名。你应该按员工点菜吗?@RossBush.不,我不是。然而,我已经尝试过了,它给我的排名像10部门的1,2,3和30部门的1,2,3,4,5,6。你可以发布样本数据。你是按分区排序的。在稠密_列中,记录将按照您的顺序(在分区内)给定一个顺序值。这怎么可能不是1呢?@RossBush…请检查问题中的样本数据。我在尝试分析函数。@Jaspreitsgh我明白了;但是窗口函数的开销似乎不值得。我添加了两种方法,您可以这样做;但是如果你不向查询公开排名,我看不出有什么理由这么做。我试着使用分析函数。@Jaspreitsigh,我明白了;但是窗口函数的开销似乎不值得。我添加了两种方法,您可以这样做;但是如果你不向查询公开排名,我看不出有什么理由这么做。