锄头一个sql表列的总和忽略重复值?

时间:2017-10-27 18:04:37

标签: sql sql-server

quoteId  price
  1        50
  1        50  
  2        10
  3        40
  3        40
  3        40  
  4        10

在此表格中,我对每个price始终获得相同的quoteId 示例:quoteId = 1有多个条目price为50。

使用SUM我会得到price列的总和,即:50 + 50 + 10 + 40 + 40 + 40 + 10 = 240

但是,我只想对price的唯一quoteId求和,即:
50+10+40+10 = 110

我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:1)

另一种选择是DISTINCT

示例

Select MyTotal = sum(price) 
 from (Select Distinct quoteId,price From YourTable) A

<强>返回

MyTotal
110

答案 1 :(得分:1)

以下查询将起作用:

select sum(price)
from yourTablename
group by quoteId,price;

答案 2 :(得分:0)

您需要一个嵌套查询,使用quoteId (或avgmax与您的数据一起)min计算中间值 < / p>

但你需要知道为什么你的quotedId有重复值,可能你以前有过错。

select sum(price) from (
  select
    quoteId,
    avg(price) price,
  from
    your_table
  group by
    quoteId
) as x

此查询符合ISO标准SQL,适用于多个数据库引擎