<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
    主站蜘蛛池模板: 德国女人一级毛片免费| 黄瓜视频影院在线观看免费| 免费一看一级毛片人| 亚洲日韩AV一区二区三区中文| 在线免费观看亚洲| 亚洲中文无码线在线观看| 黄在线观看www免费看| 亚洲一区二区三区乱码在线欧洲| 成年女人毛片免费播放人| 亚洲精品国产精品| 日韩免费高清视频网站| 激情吃奶吻胸免费视频xxxx| 亚洲免费一区二区| 日本道免费精品一区二区| 久久亚洲国产精品成人AV秋霞 | 亚洲一卡2卡3卡4卡乱码 在线| 欧洲黑大粗无码免费| 激情无码亚洲一区二区三区| www.亚洲色图.com| 成全高清在线观看免费| 亚洲黄色三级视频| 免费无码黄动漫在线观看| 十八禁的黄污污免费网站| 亚洲成AV人片一区二区密柚| 美女视频黄免费亚洲| 免费视频精品一区二区| 亚洲va无码手机在线电影| 久久精品免费全国观看国产| 美女黄频a美女大全免费皮| 亚洲AV成人片色在线观看| 亚洲精品动漫免费二区| 黄色网页在线免费观看| 亚洲人成电影在在线观看网色| 无码一区二区三区免费视频| 免费无码国产V片在线观看| 亚洲国产精品一区| 日本免费v片一二三区| 国产精品免费一区二区三区四区| 亚洲国产综合精品中文第一| 在线观看国产区亚洲一区成人 | 91香蕉国产线在线观看免费|