获取每个字段SQL Server的DISTINCT值的Count()

时间:2013-09-12 09:56:43

标签: sql sql-server

我有一个phonenumber字段,如:

**phonenumbers**
0729643482
0723412678
0734231567
0745297334
0729643482
0720606706
0729643482
0720606706

有数千个条目。我想获得最多的前10名电子邮件。 这可以显示为

**phonenumber     count**
0729643482      3
0720606706      2
.
.
.
(entry 10)      1

从我理解的一些相关问题中我可以使用rank()然后分组但我以前从未这样做过。 这就是我所拥有的:

select phonenumber,cnt FROM 
(select phonenumber, cnt, rank() over (partition by phonenumber order by cnt desc) rnk
from (select distinct phonenumber, count(phonenumber) cnt
            from ozekiout
            group by phonenumber
            order by phonenumber, count(phonenumber) desc) 
)
where rnk = 1;

3 个答案:

答案 0 :(得分:2)

您不需要等级功能,您可以使用TOP 10的正常计数:

SELECT  TOP 10 phonenumber, [count] = COUNT(*)
FROM    ozekiout
GROUP BY Phonenumber
ORDER BY [count] DESC;

如果您想要包含10个以上的结果,例如<。p>

Phonenumber  count
01111111111   18
01111111112   15
01111111113   15
01111111114   14
01111111115   13
01111111116   13
01111111117   12
01111111118   12
01111111119   10
01111111120   10
01111111121   10
01111111122   10

.... CUT OFF

01111111122   9

你可以使用:

SELECT  TOP 10 WITH TIES phonenumber, [count] = COUNT(*)
FROM    ozekiout
GROUP BY Phonenumber
ORDER BY [count] DESC;

答案 1 :(得分:0)

试试这个:

select phonenumber,Count(*) as count from ozekiout group by phonenumber order by count desc limit 10;

答案 2 :(得分:0)

SELECT TOP 10 phonenumber,[count] = COUNT(*) 来自ozekiout GROUP BY Phonenumber ORDER BY [count] DESC;

作品ryt ....谢谢你们