gpt4 book ai didi

sql-server - 如何在 sql-server (2005) 中限制 GROUP BY 子句的答案

转载 作者:行者123 更新时间:2023-12-01 02:50:27 25 4
gpt4 key购买 nike

我正在尝试获取我们数据库中所有客户列表的前 50 个城市
(如此简化:每个客户都有一个包含相关数据的客户列表(如城市))

如果我说:

 SELECT top(50) clientid, city, COUNT(city) as cnt
FROM customers
GROUP BY clientid, city
ORDER by cnt

它将限制 50 行的总结果集,而不是限制每组的结果。

我怎样才能获得每个客户 ID 的前 50 名?

编辑:
我搜索了 stackoverflow(并用谷歌搜索),但只找到了 Mysql 的解决方案。可能搜索 'limit' 只会找到 mysql 解决方案,因为这是该数据库引擎所需的关键字。如果我知道 Sql-Server 中所需的关键字,我也可以使用谷歌找到它。

最佳答案

;WITH cte
As (SELECT clientid,
city,
COUNT(city) as cnt,
ROW_NUMBER() OVER (PARTITION BY clientid
ORDER BY COUNT(city)) AS RN
FROM customers
GROUP BY clientid,
city)
SELECT clientid,
city
FROM cte
WHERE RN <= 50

关于sql-server - 如何在 sql-server (2005) 中限制 GROUP BY 子句的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com