----汗
--4. 找出销售总额最高的职员的姓名
select ename from (
select tbemp.ename, sum(tbsales.pamount) from tbemp
inner join tbsales on tbemp.eid=tbsales.eid
group by tbemp.ename
order by sum(tbsales.pamount) desc
)
where rownum = 1;
--4. 找出销售总额最高的职员的姓名
select ename from (
select tbemp.ename, sum(tbsales.pamount) from tbemp
inner join tbsales on tbemp.eid=tbsales.eid
group by tbemp.ename
order by sum(tbsales.pamount) desc
)
where rownum = 1;
解决方案 »
- oracle 对一个方案更换表空间有什么风险
- oracle 动态拼接语句并返回查询结果集
- JDBC连接池偶尔"Io 异常: The Network Adapter could not establish the connection"
- 编写一个函数
- 高级sql语句,急急急!
- oracle备份????
- 如何在触发器中使用数据库连接
- 急...我的oracle 8.0.5 起动不了
- 我的问题高手们帮个忙吧,再加100分给有杰出贡献的高手,今晚就结贴如果满意的话
- Oracle11g通过Dblink连接SqlServer2005
- 菜鸟弱弱的问下Oracle与SqlServer最大的区别是什么
- 错误提示:FROM keyword not found where expected不知问题何在
select * from (
select tbemp.ename, sum(tbsales.pamount),rank()over(order by sum(tbsales.pamount) desc ) as rank_num from tbemp
inner join tbsales on tbemp.eid=tbsales.eid
group by tbemp.ename)
where rank_num = 1
select tbemp.ename, sum(tbsales.pamount) from tbemp
inner join tbsales on tbemp.eid=tbsales.eid
group by tbemp.ename
having sum(tbsales.pamount) = (
select max(pamount) from
(select tbemp.ename, sum(tbsales.pamount) as pamount from tbemp
inner join tbsales on tbemp.eid=tbsales.eid
group by tbemp.ename
)
)
这时排序后的最高销售总额的有2名了,这样他的rank_num=2,where rank_num=1
查询出的还是林雪一个人,题目是最高要一起查询出来。
另外,我已经告诉你 rank 这个分析函数了,请你百度下它的含义,再提出问题
oracle在排序方面有3个分析函数 rank,dense_rank,row_number,请你去看看再说select tbemp.ename, sum(tbsales.pamount),rank()over(order by sum(tbsales.pamount) desc ) as rank_num
,dense_rank()over(order by sum(tbsales.pamount) desc )
,row_number()over(order by sum(tbsales.pamount) desc )
from tbemp
inner join tbsales on tbemp.eid=tbsales.eid
group by tbemp.ename
学习了但是有个问题想问一下
SQL> SELECT DENSE_RANK() OVER(PARTITION BY EID ORDER BY SUM(PAMOUNT)) NUM FROM TBSALES;
SELECT DENSE_RANK() OVER(PARTITION BY EID ORDER BY SUM(PAMOUNT)) NUM FROM TBSALES
*
行1でエラーが発生しました。:
ORA-00937: 単一グループのグループ関数ではありません。
为什么OVER里面不能分组了呢??
就会报上面的错误,需要对投影中的非聚合函数的字段分组,EG:SELECT EID,SUM(PAMOUNT) FROM TBSALES GROUP BY EID;
真纠结,PARTITION BY EID 会产生4条记录,ORDER BY SUM(PAMOUNT)产生一条记录,所以汇报错了。
是这样理解的吧?
dense_rank() over()我叫他密集函数,当出现相同数据时,会默认相同数据有一样的编号,且接下来的编号不会跳跃
rank() over()函数,当出现相同数据时,会默认相同数据有一样的编号,且接下来的编号会跳跃
row_number() over()函数,仅对数据进行编号,而不考虑数据是否相同