两种方法随便选一种吧,试试看~~~ select * from ( select distinct tt.sc_courseid, decode(sign(min(tt.sc_score) over(partition by tt.sc_courseid)-60),1,'xf',avg(tt.sc_score) over(partition by tt.sc_courseid)) as avg_score from tablename tt )zz where zz.avg_score <> 'xf';select tt2.sc_courseid, avg(tt2.sc_score) from tablename tt2 where tt2.sc_courseid in ( select tt.sc_courseid from tablename tt group by tt.sc_courseid having min(tt.sc_score) < 60 ) group by tt2.sc_courseid;
select tt2.sc_courseid, avg(tt2.sc_score) from tablename tt2 where tt2.sc_courseid in ( select tt.sc_courseid from tablename tt group by tt.sc_courseid having min(tt.sc_score) < 60 ) group by tt2.sc_courseid;
SELECT sc_courseidhe, Avg(sc_score) FROM table1 GROUP BY sc_courseidhe HAVING Min(sc_score)<=60
SELECT sc_courseidhe, Avg(sc_score) FROM table1 GROUP BY sc_courseidhe HAVING Min(sc_score)<=60
select *
from (
select distinct
tt.sc_courseid,
decode(sign(min(tt.sc_score) over(partition by tt.sc_courseid)-60),1,'xf',avg(tt.sc_score) over(partition by tt.sc_courseid)) as avg_score
from tablename tt
)zz
where zz.avg_score <> 'xf';select tt2.sc_courseid,
avg(tt2.sc_score)
from tablename tt2
where tt2.sc_courseid in (
select tt.sc_courseid
from tablename tt
group by tt.sc_courseid
having min(tt.sc_score) < 60
)
group by tt2.sc_courseid;
avg(tt2.sc_score)
from tablename tt2
where tt2.sc_courseid in (
select tt.sc_courseid
from tablename tt
group by tt.sc_courseid
having min(tt.sc_score) < 60
)
group by tt2.sc_courseid;
SELECT sc_courseidhe, Avg(sc_score)
FROM table1
GROUP BY sc_courseidhe
HAVING Min(sc_score)<=60