描述:
當計算平均值時,通過去掉最大值和最小值,以降低它們對最終計算結果的影響
例如,統計員工的平均工資時,先去掉最高工資和最低工資,再計算全體員工的平均工資
解決方案:
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