【问题标题】:How to sum data from two columns and partition it in oracle SQL如何对两列中的数据求和并在oracle SQL中对其进行分区
【发布时间】:2018-04-04 23:30:05
【问题描述】:

我有下表:

COLA    COLB    COLC    COLD
CSA   201603    0      10
ABC   201603    0      800
PQR   201603    0      400
ABC   201603    0      1000
CSA   201603    0      800
PQR   201604    1000   0

并且需要以下形式的输出:

COLA    COLB    COLC    COLD
ABC   201603    0      1000
ABC   201603    0      800
PQR   201604    1000     0

这里的条件是:COLA 和 COLB 的组合作为键,所以只打印那些具有 COLC+COLD>1000 的值,其余忽略

以上输出需要oracle SQL,请建议!

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    你的直觉是对的。一种简单的方法是使用分析函数:

    select cola, colb, colc, cold
    from (select t.*, sum(colc + cold) over (partition by cola, colb) as sumab
          from t
         ) t
    where sumab >= 1000;
    

    【讨论】:

      【解决方案2】:
      SELECT COLA,
             COLB,
             COLC,
             COLD
      FROM   (
        SELECT COLA,
               COLB,
               COLC,
               COLD,
               SUM( COLC + COLD ) OVER ( PARTITION BY COLA, COLB ) AS total
        FROM   table_name
      )
      WHERE  total > 1000;
      

      【讨论】:

        猜你喜欢
        • 2015-12-14
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多