【发布时间】:2011-03-09 15:44:58
【问题描述】:
我正在尝试获取我们数据库中所有客户列表的前 50 个城市 (如此简化:每个客户都有一个客户列表以及相关数据(如城市))
如果我说:
SELECT top(50) clientid, city, COUNT(city) as cnt
FROM customers
GROUP BY clientid, city
ORDER by cnt
它将总结果集限制为 50 行,而不是限制每个组的结果。
如何获得每个客户端 ID 的前 50 名?
编辑: 我搜索了stackoverflow(并用谷歌搜索)但只找到了Mysql的解决方案。可能搜索“限制”只会找到 mysql 解决方案,因为这是该数据库引擎所需的关键字。如果我知道 Sql-Server 中需要的关键字,我也可以使用 google 找到它。
【问题讨论】:
-
“前 50 名”到底是什么意思?排名的标准是什么?
-
@ramy:“前 50 名”是指按城市的出现次数排序。因此,居住在一个城市的用户越多,他们的排名就越高
-
@Dirk 你觉得下面的答案怎么样?
标签: sql-server sql-server-2005 group-by limit