17,377
社区成员
发帖
与我相关
我的任务
分享
with tb_a as (
select 1 id ,30 age ,1 classid from dual
union
select 2 id ,10 age ,3 classid from dual
union
select 3 id ,20 age ,1 classid from dual
union
select 4 id ,33 age ,2 classid from dual
union
select 5 id ,30 age ,1 classid from dual
union
select 6 id ,31 age ,2 classid from dual
union
select 7 id ,40 age ,3 classid from dual
union
select 8 id ,10 age ,2 classid from dual
union
select 9 id ,39 age ,1 classid from dual
)
select *
from tb_a c
where exists (
select 1
from (select a.classid, avg(a.age) avage
from tb_a a
group by a.classid) b
where c.classid = b.classid
and c.age > b.avage);
select *,avg(age)over(partition by classid) avg_age where age>avg_age
from student;