计数不同条目通过一个新的列求和值

问题描述:

你会怎么做:计数不同条目通过一个新的列求和值

Tim ... 
Tim ... 
Henry ... 
Henry ... 
Henry ... 

我对第一列thatc ontains这些名称的表,我很感兴趣,添加一个新的列X,即应该有:

0.5 
0.5 
0.333 
0.333 
0.333 

计算第一列中不同条目的数量(如果要执行新列的总和)。谢谢!

您可以使用下列内容:

select name, 
    1.0/count(name) over(partition by name) as X 
from yourtable 

SQL Fiddle with Demo

+0

非常感谢你,bluefeet,在我注意到你的答案之前,我已经尝试了第一个答案变种,但你的确非常有趣,特别是我没有使用“分区”,但几次!我现在要试试这个! – Sam 2013-02-13 11:47:04

+0

伟大的解决方案,经过测试,如果表中包含多列,选择可以参考几个! – Sam 2013-02-13 11:53:22

+1

@Sam不客气。关于'over()'的好处是你不必对它使用'group by'子句。 :) – Taryn 2013-02-13 11:53:41

请尝试:

select 
[Name], 1.00/count(*) 
from YourTable 
group by [Name] 

样品:

declare @testTable table (Name varchar(10)) 

insert into @testTable 
select 'A' UNION ALL 
select 'A' UNION ALL 
select 'A' UNION ALL 
select 'B' UNION ALL 
select 'B' 

SELECT 
    [Name], 1.00/count(*) 
FROM @testTable 
GROUP BY [Name] 
+0

非常感谢你,techdo!我试过了,它创造了奇迹。 – Sam 2013-02-13 11:52:37