首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我需要表格中的前10个结果

我需要表格中的前10个结果
EN

Stack Overflow用户
提问于 2014-08-12 22:08:30
回答 2查看 76关注 0票数 0

我需要得到每个地区,市场和名称的前10名的结果,以及那些最高的计数(差距)。有4个区域,有1到N个市场。我可以获得前10名,但如果不使用每个市场的联盟,我就不知道如何做到这一点。关于如何做到这一点有什么想法吗?

代码语言:javascript
运行
复制
SELECT DISTINCT TOP 10 
    Region, Market, Name, Gaps 
FROM
    TableName
ORDER BY 
    Region, Market, Gaps DESC 
EN

Stack Overflow用户

发布于 2014-08-12 22:11:49

一种方法是使用CTE (公用表表达式),如果您使用的是SQL Server 2005和更高版本(您在这方面还不够具体)。

使用这个CTE,你可以用一些标准来划分你的数据--比如你的Region, Market, Name --并且让SQL Server对你所有的行进行编号,每个“分区”都是从1开始的,按照一些标准排序。

所以试着这样做:

代码语言:javascript
运行
复制
;WITH RegionsMarkets AS
(
   SELECT 
       Region, Market, Name, Gaps,
       RN = ROW_NUMBER() OVER(PARTITION BY Region, Market, Name ORDER BY Gaps DESC) 
   FROM 
       dbo.TableName
)
SELECT 
   Region, Market, Name, Gaps
FROM 
   RegionsMarkets
WHERE
   RN <= 10

在这里,我只为每个“分区”(即每个Region, Market, Name元组)选择“第一个”条目-按Gaps降序排序。

这样,您就得到了每个(Region, Market, Name)元组的前10行--这接近您想要的结果了吗?

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25266470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档