您的位置:首页 > 数据库 > Oracle

oracle中使用rownum筛选最大(最小)值遇到并列出现的问题

2018-12-21 10:54 92 查看

oracle中使用rownum筛选最大(最小)值遇到并列出现的问题

学习oracle的时候遇到一个问题:已有表tb_emp,tb_sales(创建代码在最后),找出完成销售业务笔数最少的职员的姓名和他完成的业务数。

首先按姓名统计每个职员一共完成了多少笔销售业务

select e.name,count(s.eid)
from tb_sales s,tb_emp e
where e.id=s.eid(+)--使用左外连接统计0笔销售业务的职员
group by e.name;


对于这个问题,我最初想到的是排序后取rownum;

select *
from(
select e.name,count(s.eid)
from tb_sales s,tb_emp e
where e.id=s.eid(+)--使用左外连接统计0笔销售业务的职员
group by e.name
order by count(s.eid)
)where rownum=1;

结果多个职员销售笔数并列最低但结果只显示其中的1个。

解决方法:筛选所有销售笔数等于最小销售笔数的职员

select e.name,count(s.eid)
from tb_emp e ,tb_sales s
where e.id = s.eid(+)
group by e.name
having count(s.eid) = (
select min(count(s.eid))
from tb_emp e ,tb_sales s
where e.id = s.eid(+)
group by e.name
);


问题得以解决。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: