您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何从每个组中选择TOP 5%?

如何从每个组中选择TOP 5%?

您可以将CTE(公用表表达式)与NTILE开窗功能配对使用-这会将您的数据切成所需的任意数量的切片,例如在您的情况下,分成20个切片(每个5%)。

;WITH SlicedData AS
(
   SELECT Category, Name, COUNT(Name) Total,
            NTILE(20) OVER(PARTITION BY Category ORDER BY COUNT(Name) DESC) AS  'NTile'
   FROM #TEMP
   GROUP BY Category, Name
)
SELECT *
FROM SlicedData
WHERE NTile > 1

基本上Category,Name,这将您的数据按照进行分组COUNT(Name),再按其他顺序(不确定是否确实是您想要的东西)进行分组,然后将其切成20个片段,每个片段代表您数据分区的5%。具有的切片NTile = 1是前5%的切片-从CTE中进行选择时,只需忽略该切片即可。

其他 2022/1/1 18:44:25 有462人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶