計算平均值時去掉最大值和最小值


描述:

  當計算平均值時,通過去掉最大值和最小值,以降低它們對最終計算結果的影響
  例如,統計員工的平均工資時,先去掉最高工資和最低工資,再計算全體員工的平均工資

 

解決方案:

with dataset as (
    select 'Jack' as Name,100 as Sales from dual
    union all
    select 'Tom' as Name,120 as Sales from dual
    union all
    select 'Jimmy' as Name,10 as Sales from dual
    union all
    select 'Frank' as Name,999 as Sales from dual
    union all
    select 'John' as Name,105 as Sales from dual
)

select avg(Sales)
from 
(
    select Name,
            Sales,
            min(Sales)over() as min_sales,
            max(Sales)over() as max_sales
    from dataset
) t
where t.Sales not in (t.min_sales,t.max_sales)

結果:

  AVG(SALES)

  108.333333333333


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM