如何对不同列的值求和

Posted

技术标签:

【中文标题】如何对不同列的值求和【英文标题】:How can I sum value of distinct columns 【发布时间】:2015-11-08 06:24:43 【问题描述】:

我有两列(col1 和 col 2)col1 是 VARCHAR 数据类型,col2 是 INT。我有许多重复 col1 值的记录。现在我需要 sum(col2) 其中col1 是不同的。我该怎么做?

我以前试过这样,但没有用。

Select distinct 
    col1, sum(col2) as col2 
from mytable 
group by col1

Select sum(col2) 
from
    (Select distinct col1 from mytable)

【问题讨论】:

为了更好地回答您的问题。我认为声明 varchar 数据类型的两个实体对你来说是有意义的,除非你有一个真正强加给你的约束。我似乎不明白你想在这里实现什么。 (我相信您正在尝试进行某种连接)。请尝试更具体一点。 显示一些数据和结果,并解释它与您的预期有何不同。至少没有我们无法真正提供帮助。 hm..,不清楚你需要什么,但看起来你不需要使用 distint,只需分组:select col1, sum(col2) from mytable group by col1 【参考方案1】:
WITH
CTE
AS
(
    SELECT
        col1
        ,col2
        ,ROW_NUMBER() OVER(PARTITION BY col1 ORDER BY col2) AS rn
    FROM mytable
)
SELECT
    SUM(col2) AS SumCol2
FROM CTE
WHERE rn=1
;

如果col1 中有几行具有相同的值,您应该决定要选择哪一行。上面的查询将选择col2 最小的行。

【讨论】:

以上是关于如何对不同列的值求和的主要内容,如果未能解决你的问题,请参考以下文章

根据来自不同列的 2 个其他值对列的值求和

如何对同一集合中不同文档的值求和?

如何对同一集合中不同文档的值求和?

根据不同的条件对两个不同的列进行分组和求和

SQLite如何对`GridView`中列的值求和

复合求和:我想创建一个复合查询,它从两个不同的表中获取两列的单独总和,然后对它们求和