概述
一种方式做,这是使用如您所做的那样进行汇总查询,然后在最大程度上使用聚合函数。例如,使用该函数FIRST/LAST(和使用该SCOTT架构,EMP表用于说明):
select min(extract(year from hiredate)) keep (dense_rank last order by count(empno)) as yr,
max(count(empno)) as emp_count
from emp
group by extract(year from hiredate)
;
YR EMP_COUNT
---- ---------
1981 10
有两个问题与该溶液中。首先,许多开发人员(包括许多经验丰富的开发人员)似乎并不知道FIRST/LAST函数,或者不愿意使用它。另一个更严重的问题是,在这个问题中,可能会有几年的雇员人数相同,人数最多。问题要求必须比原始帖子更详细。第一名有关系时,期望的输出是什么?
以上查询返回最大雇佣人数达到时所有不同年份的最早值。将SELECT子句中的MIN更改为MAX,并且您将获得最近一年发生最多雇用人数的情况。但是,我们通常需要一个查询,在关系情况下,将返回全部与大多数雇员并列的年份。 不能用FIRST/LAST函数完成。
为此,一个紧凑的解决方案将为您的原始查询添加一个分析函数,按雇员数量对年份进行排名。然后在一个外部查询中筛选rank = 1的行。
select yr, emp_count
from (
select extract(year from hiredate) as yr, count(empno) as emp_count,
rank() over (order by count(empno) desc) as rnk
from emp
group by extract(year from hiredate)
)
where rnk = 1
;
或者使用max()解析函数子查询(而不是等级式解析函数)的SELECT子句中:
select yr, emp_count
from (
select extract(year from hiredate) as yr, count(empno) as emp_count,
max(count(empno)) over() as max_count
from emp
group by extract(year from hiredate)
)
where emp_count = max_count
;
最后
以上就是香蕉大树为你收集整理的oracle12c不买会咋样,ORACLE 12c - “不是单一群体功能”的全部内容,希望文章能够帮你解决oracle12c不买会咋样,ORACLE 12c - “不是单一群体功能”所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复