<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

    問題:對于數字列中的值,計算其累計差。例如,計算DEPTNO 10中工資的累計差。要返回下列結果集:

    ENAME              SAL RUNNING_DIFF

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

    MILLER            1300          1300

    CLARK             2450         -1150

    KING              5000         -6150

    解決方案

    DB2和Oracle

    使用窗口函數SUM OVER創建累計差:

    1   select ename,sal,

    2          sum(case when rn = 1 then sal else -sal end)

    3           over(order by sal,empno) as running_diff<>5   select empno,ename,sal,

    6          row_number()over(order by sal,empno) as rn

    7     from emp

    8    where deptno = 10

    9          ) x

    MySQL、PostgreSQL和SQL Server

    使用標量子查詢計算累計差:

    1 select a.empno, a.ename, a.sal,

    2         (select case when a.empno = min(b.empno) then sum(b.sal)

    3                      else sum(-b.sal)

    4                 end

    5            from emp b

    6           where b.empno <= a.empno

    7             and b.deptno = a.deptno ) as rnk

    8    from emp a

    9   where a.deptno = 10

    討論

    該解決方案與“生成累計和”一節介紹的解決方案大致相同。唯一的差別是:SAL除了第一個值(因為要從DEPTNO 10的SAL開始)之外,其余所有值都返回負值。

    posted on 2008-05-14 21:42 紙飛機 閱讀(570) 評論(0)  編輯  收藏 所屬分類: Database
    主站蜘蛛池模板: 亚洲精品视频在线播放| 国产亚洲一区二区手机在线观看 | 国产男女猛烈无遮挡免费视频| 亚洲一区二区三区免费观看| 91精品导航在线网址免费| 久久久无码精品亚洲日韩蜜臀浪潮| 久久久久免费精品国产小说| 亚洲gv猛男gv无码男同短文| 99精品视频免费| 久久亚洲一区二区| 69视频在线观看高清免费| 亚洲精品视频久久| 久久经典免费视频| 亚洲成a人无码亚洲成www牛牛 | 亚洲国产情侣一区二区三区| jjizz全部免费看片| 国产精品久久亚洲不卡动漫| 成人免费视频软件网站| 极品色天使在线婷婷天堂亚洲| 国产精品亚洲综合一区| 一个人免费视频观看在线www| 亚洲天天做日日做天天欢毛片| 日韩精品免费一级视频| 亚洲精品无AMM毛片| 亚洲黄黄黄网站在线观看| 韩国免费A级毛片久久| 亚洲综合一区二区精品导航| 麻豆一区二区免费播放网站| www亚洲精品久久久乳| 国产午夜亚洲精品国产成人小说| 久久免费国产视频| 亚洲日韩av无码中文| 亚洲国产人成中文幕一级二级| 一区二区三区四区免费视频 | 亚洲AV伊人久久青青草原| 97超高清在线观看免费视频| 亚洲国产美女视频| 免费国产a国产片高清网站| 成人av片无码免费天天看| 亚洲理论电影在线观看| 一级毛片免费视频|