表workload(empid,workdate,hours),用一条sql查询出平均每天工作小时数最多的员工id,试了很多,都感觉写的很累赘,select empid
from (select empid, avg(hours) as avghours
from workload
group by empid) c
where c.avghours>= (select max(avghours)
from (select empid, avg(hours) as avghours
from workload
group by empid))
用了两次相同的子查询,
谁能用简洁的一条sql搞定呢,麻烦献上一条哦,感谢!!!
from (select empid, avg(hours) as avghours
from workload
group by empid) c
where c.avghours>= (select max(avghours)
from (select empid, avg(hours) as avghours
from workload
group by empid))
用了两次相同的子查询,
谁能用简洁的一条sql搞定呢,麻烦献上一条哦,感谢!!!
解决方案 »
- 请教: 系统表 AUD$ 的 USERHOST 中出现的怪字符
- sqlplus连接Oracle时出现的问题
- 初学者,oracle存储过程如何返回结果集,别笑我,我实在郁闷,oracle怎么这么麻烦。
- 急贴 ! Linux下的Oracle中如何在Linux排程中定时删除三天前(相对于现在时间)的归档文件 .
- 一个oracle ,sql
- oralce中如何判断指定的列名是否存在!
- 怎么能够知道我的表(空间)结构呢?
- 我写了一个存储过程效率很低,请问有什么办法能提高效率
- win7 32位下 oracle 11g.执行shutdown immediate时直接关闭了,再连接该数据库时就卡住了,重启也是卡
- 小弟刚开始学习,模仿着写了一个循环读取文件内容的过程,求帮助
- merge、delete、/*+ BYPASS_UJVC*/,删除效率
- 2个各有2,3条记录的表做关联,怎么查出来19条记录?
select empid
from(
select empid,
avg(hours),
row_number()over(order by avg(hours) desc) as rn
from workload
group by empid
)where rn = 1 -- rn = 1 平均时长第一,rn=2 平均时长第二 通用不?
分析函数,改成rank更好吧,可以查询出并列的。
FROM (SELECT AVG(hours), empid
FROM workload
GROUP BY empid
ORDER BY AVG(hours) DESC)
WHERE ROWNUM = 1
需要查询出并列的,用rank 怎么写呢?