<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    紙飛機

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      22 隨筆 :: 28 文章 :: 30 評論 :: 0 Trackbacks

    問題:計算平均數,但希望排除最大和最小值,以(希望能)減少數據畸偏造成的影響。例如,計算除最高和最低工資外的所有職員的平均工資。

    解決方案

    MySQL和PostgreSQL

    使用子查詢排除最高和最低值:

    1   select avg(sal)

    2     from emp

    3    where sal not in (

    4       (select min(sal) from emp),

    5       (select max(sal) from emp)

    6    )

    DB2、Oracle和SQL Server

    使用內聯視圖及窗口函數MAX OVER和MIN OVER,生成一個結果集,可以很容易地從中剔除最大和最小值:

    1   select avg(sal)

    2     from (

    3   select sal, min(sal)over() min_sal, max(sal)over() max_sal

    4     from emp

    5          ) x

    6    where sal not in (min_sal,max_sal)

    討論

    MySQL和PostgreSQL

    子查詢返回表中的最高工資和最低工資。針對返回的值使用NOT IN,就可以從平均值中排除最高工資和最低工資。記住,如果存在重復(多個職員都是最高或最低工資),那么他們都會被排除在平均值之外。如果只想排除一個最高和最低值,只需從SUM中減去它們,再做除法:

    select (sum(sal)-min(sal)-max(sal))/(count(*)-2)

       from emp

    DB2、Oracle和SQL Server

    內聯視圖X將返回所有工資,其中包括最高工資和最低工資:

    select sal, min(sal)over() min_sal, max(sal)over() max_sal

       from emp

           SAL    MIN_SAL    MAX_SAL

    --------- --------- ---------

           800        800       5000

          1600        800       5000

          1250        800       5000

          2975        800       5000

          1250        800       5000

          2850        800       5000

          2450        800       5000

          3000        800       5000

          5000        800       5000

          1500        800       5000

          1100        800       5000

           950        800       5000

          3000        800       5000

          1300        800       5000

    從每一行都可以訪問最高工資和最低工資,因此,要找出哪些工資是最高工資的和/或最低工資的非常簡單。外層查詢會對內聯視圖X返回的行作篩選,這樣,所有與MIN_SAL和MAX_SALAN相匹配的行都會從平均值中排除掉。

    posted on 2008-05-14 21:49 紙飛機 閱讀(1764) 評論(0)  編輯  收藏 所屬分類: Database
    主站蜘蛛池模板: 水蜜桃亚洲一二三四在线| 亚洲乱码一区av春药高潮| 粉色视频成年免费人15次| 成年女人午夜毛片免费视频| 亚洲区视频在线观看| 真人做人试看60分钟免费视频| 国产精品嫩草影院免费| 亚洲爆乳少妇无码激情| 99精品热线在线观看免费视频| 四虎精品亚洲一区二区三区| 亚洲精品视频在线观看视频| 国产A∨免费精品视频| 亚洲熟女少妇一区二区| 国产在线观看免费视频软件| 日韩亚洲人成在线综合日本| 视频一区在线免费观看| 成年18网站免费视频网站| 亚洲色www永久网站| 青青操在线免费观看| 无码久久精品国产亚洲Av影片 | 免费99热在线观看| 亚洲国产中文在线二区三区免| 美女视频黄的全免费视频| 久久久亚洲裙底偷窥综合| free哆啪啪免费永久| 色偷偷噜噜噜亚洲男人| 亚洲中文字幕不卡无码| a级毛片免费观看在线| 久久精品九九亚洲精品天堂| 免费v片在线观看视频网站| 亚洲AV无码成人精品区日韩 | 无码天堂va亚洲va在线va| 中文字幕亚洲无线码| h片在线免费观看| 男女超爽视频免费播放| 亚洲av日韩av无码| 国产精品免费视频一区| 日本免费污片中国特一级| 亚洲爆乳成av人在线视菜奈实| 亚洲精品无码不卡在线播放HE| 国产精品偷伦视频免费观看了 |