如何在忽略重复值的情况下对一个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;