唯一表的总和

时间:2016-03-01 09:27:43

标签: mysql

我必须根据A列和D列的不同值生成B列和C列的总和。

column A | column B | column C | column D
------------------------------------------
A1       | 23       | 33       | unique1
A1       | 73       | 44       | unique2
A1       | 99       | 87       | unique3
A1       | 23       | 33       | unique1
A1       | 56       | 35       | unique4
A1       | 73       | 44       | unique2

现在我必须对A列(A1)的B列和C列数据进行求和,但跳过第4行和第6行,因为D列是重复的。

我使用了group by和SUM但是获得了4行。我需要所有的总和" B"和" C"所有4条记录。

2 个答案:

答案 0 :(得分:1)

尝试此查询:

with cte as (
    select A, B, C
    from table1
    group by A, B, C, D
)
select A, sum(B) as sumB, sum(C) as sumC
from cte
group by A

答案 1 :(得分:1)

根据您的comment

  

DISTINCT给了我多行,我想要的输出是 - (23 + 33 + 73   + 44 + 99 + 87 + 56 + 35)仅限一行

尝试以下查询:

SELECT
    SUM(B + C) totalSum
FROM
    (
        SELECT DISTINCT
            A,
            B,
            C,
            D
        FROM your_table
    ) t

在此SQL FIDDLE

中尝试此查询

根据mysql文档:

  

DISTINCT指定从结果集中删除重复的行。

Reference

示例输入:

enter image description here

示例输出:

enter image description here