【问题标题】:Getting duplicates values and summing up of 2nd column in SQL获取重复值并汇总 SQL 中的第二列
【发布时间】:2016-01-11 10:45:15
【问题描述】:

我有一个表测试,它的数据是:

    A   B
    1   One
    2   One
    2   Two
    3   One
    2   One
    5   Two
    2   Three
    2   Two
    2   Three
    2   Two
    2   One

现在我想要如下输出:

    A   B
    10  One
    10  One
    11  Two
    10  One
    10  One
    11  Two
    4   Three
    11  Two
    4   Three
    11  Two
    10  One

我试过了

SELECT B,SUM(A) FROM Test GROUP BY A 但我得到了:

One    10
Three   4
Two    11

谁能告诉我如何以最短的方式达到同样的效果,提前谢谢。

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:
    SELECT SUM(A) OVER (PARTITION BY B), B FROM Test
    

    【讨论】:

    • 比我的答案更好。
    【解决方案2】:
    select t1.B, t2.sum_a
    FROM Test t1
      join (select b, sum(a) as sum_a from test group by b) t2 on t1.b = t2.b
    

    【讨论】:

    • Nenad Zivkovic 的答案会更好,只要 dbms 支持该语法。 (如果没有,请改用我的答案。)
    • @jarlh 是的,但问题被标记为 sql-server。它不适用于大多数其他 DBMS-es
    • 是的,我只需要它用于 sql-server,感谢你们两个抽出时间。
    【解决方案3】:

    我会尝试做一个子选择,其中执行总和并按 B 列分组,然后将此子选择与您当前的表连接。

    SELECT original.B, subquery.total 
    FROM original 
    INNER JOIN (
        SELECT B, SUM(A) AS total FROM original GROUP BY B) as subselect ON original.B = subquery.B
    

    检查另一个堆栈溢出:How to write subquery inside the OUTER JOIN Statement

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2015-05-18
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      相关资源
      最近更新 更多