sql - 获取覆盖组的 N 条记录的客户数量
问题描述
我在 cust_id 级别有一个唯一的表,并且具有以下内容:
CustID Product Country Region
1 A US NA
2 A US NA
3 A US NA
4 A US NA
5 A US NA
6 B US NA
7 B US NA
8 B US NA
9 B US NA
10 C US NA
11 C US NA
12 C US NA
13 C US NA
14 D US NA
15 D US NA
16 D US NA
17 E US NA
18 E US NA
19 A UK EMEA
20 A UK EMEA
21 A UK EMEA
22 A UK EMEA
23 A UK EMEA
24 B UK EMEA
25 B UK EMEA
26 B UK EMEA
27 B UK EMEA
28 C UK EMEA
29 C UK EMEA
30 C UK EMEA
31 C UK EMEA
32 D UK EMEA
33 D UK EMEA
34 D UK EMEA
35 E UK EMEA
36 E UK EMEA
我正在寻找一个 SQL 查询,它将返回一个国家和地区使用的前 4(N) 种产品以及使用每种产品的客户数量。输出将如下所示:
Region Country Product Count ( Distinct ( cust_id ))
NA US A 5
NA US B 4
NA US C 4
NA US D 3
UK EMEA A 4
UK EMEA B 4
UK EMEA C 4
UK EMEA D 3
请帮忙。谢谢!
解决方案
您可以为此使用带有窗口函数的聚合:
select rcp.*
from (select region, country, product, count(*) as cnt,
row_number() over (partition by region, country order by count(*) desc) as seqnum
from t
group by region, country, product
) rcp
where seqnum <= 4
推荐阅读
- javascript - React - 在 JSX 中呈现信息
- c++ - 没有用户输入的类输入结构
- amazon-web-services - 未在 AWS SAM Lambda 函数上创建 SQS 事件源
- scala - 为什么 SBT 发布一个被跳过的 JAR?
- android - 如何在 android 的 agora.io 直播视频流中维护点赞计数器?
- typescript - Firebase - 未定义 importScripts
- app-inventor - AppInventor - WebViewer - 访问手机文件
- string - 无法将字符串变量中的日期分配给 C# 中的日期时间变量
- dynamics-crm - EntityReference 不适用于 AlternateKey
- wordpress - Woocommerce 可变产品创建所有属性的变化