SQL Server SUM() 用于 DISTINCT 记录

Jer*_*eck 5 t-sql

我有一个名为“Users”的字段,我想在该字段上运行 SUM() 以返回所有 DISTINCT 记录的总和。我认为这会起作用:

SELECT SUM(DISTINCT table_name.users)
FROM table_name
Run Code Online (Sandbox Code Playgroud)

但它没有选择 DISTINCT 记录,它只是像我运行 SUM(table_name.users) 一样运行。

我需要做什么才能仅添加该字段中的不同记录?

jue*_*n d 6

使用count()

SELECT count(DISTINCT table_name.users)
FROM table_name
Run Code Online (Sandbox Code Playgroud)

SQLFiddle 演示

  • COUNT() 和 SUM() 根本不是一回事。(我知道你认为他想要一个用户数,但用户实际上可能是一个数字,你知道。) (13认同)

Kyl*_*ale 5

此代码似乎表明 sum(distinct ) 和 sum() 返回不同的值。

with t as (
select 1 as a 
union all
select '1'
union all
select '2'
union all
select '4'
)

select sum(distinct a) as DistinctSum, sum(a) as allSum, count(distinct a) as distinctCount, count(a) as allCount from t
Run Code Online (Sandbox Code Playgroud)

你真的有非独特的价值观吗?

select count(1), users
from table_name
group by users
having count(1) > 1
Run Code Online (Sandbox Code Playgroud)

如果不是,则总和将相同。