Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在忽略重复值的情况下对一个sql表列求和?_Sql_Sql Server - Fatal编程技术网

如何在忽略重复值的情况下对一个sql表列求和?

如何在忽略重复值的情况下对一个sql表列求和?,sql,sql-server,Sql,Sql Server,在这个表中,我总是得到每个quoteId相同的price 示例:quoteId=1有多个price为50的条目 通过使用SUM我得到price列的总和,即:50+50+10+40+40+40+10=240 但是,我只想对quoteId的唯一price求和,即: 50+10+40+10=110 如何实现这一点?您需要一个嵌套查询,通过quoteId使用avg(或max或min与数据一起计算中间值) 但你需要知道为什么你有重复的价值,通过引号,可能是你有一个错误之前 quoteId price

在这个表中,我总是得到每个
quoteId
相同的
price

示例:
quoteId=1
有多个
price
为50的条目

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

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


如何实现这一点?

您需要一个嵌套查询,通过
quoteId
使用
avg
(或
max
min
与数据一起计算中间值)

但你需要知道为什么你有重复的价值,通过引号,可能是你有一个错误之前

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

此查询符合ISO标准SQL,并将与多个数据库引擎一起工作

另一个选项是不同的

示例

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

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

以下查询将起作用:

MyTotal
110

请不要使用不适用于您的问题的标记。我删除了数据库标签,因为不清楚您实际使用的是哪一个。请仅添加您实际使用的数据库的标记只需按quoteId、PRICE添加组如果以下任何答案已解决您的问题,则将其作为答案接受;否则,请在答案下方评论剩余问题。请正确标记。它不是MySQL就是SQL Server,不能两者都是。
select sum(price)
from yourTablename
group by quoteId,price;