计算唯一名称的数量
问题描述:
我试图返回给定数量的服务器名称,然后计算返回的次数。例如:计算唯一名称的数量
select servername, count(distinct servername) number
from TABLE
where [target] = 'blah'
group by servername
这将返回以下:
servername number
server1 1
server2 1
什么我试图得到的是针对“号码”一栏改为“2”,因为有2个不同的servernames节点。这应该非常简单,但我完全不知所措。
答
您可以使用相关子查询:
select distinct servername,
(select count(distinct servername)
from yourtable
where target = 'blah') number
from yourtable
where target = 'blah'
答
select servername,
count(*) over (partition by servername) as number
from the_table
where [target] = 'blah'
窗口职能(over()
部分)所有现代DBMS包括SQL Server(你似乎可以用支持)
+0
我不认为你可以在SQL Server中使用'count(distinct)'和'over'。 – Taryn 2013-02-12 21:35:27
+0
@bluefeet:是的,后来我意识到了。我纠正了它(由于''partition by''实际上并不需要) – 2013-02-12 21:36:34
我觉得这是简单的,我忽略了。谢谢! – 2013-02-12 21:32:53