首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ACCESS--分组排名获取常驻小区

ACCESS--分组排名获取常驻小区

作者头像
披头
发布2019-12-26 11:08:44
发布2019-12-26 11:08:44
1.3K1
举报
文章被收录于专栏:datartisandatartisan

现如今,端到端感知优化越来越重要了,有时,我们需要获取每个用户的 TOPN 常驻小区。 假设我们有如下业务报表:

我们要获取每个用户的 TOP3 常驻小区,少量小区用 excel 处理就好了,但是一般这种用户级报表都是几百万行,这个时候,数据库就该上场了。

我们先给这个报表添加一列分组排名来标记每个用户不同占用小区的流量,然后筛选分组排名为1,2,3 就好了,今天看一下 ACCESS 如何实现。

1)首先对原表进行排序;

代码语言:javascript
复制
SELECT 
user.msisdn, 
user.cellname, 
user.throughput
FROM [user]
ORDER BY user.msisdn, user.throughput DESC;

得到如下结果:

2)该表基础上,建立子查询得到分组排名;

代码语言:javascript
复制
SELECT 
qry1.msisdn, 
qry1.cellname, 
qry1.throughput,
(select count(*) from qry1 as tbl2 
where qry1.throughput < tbl2.throughput and qry1.msisdn = tbl2.msisdn)+1 AS `rankN`
FROM qry1;

得到如下结果:

3)将分组排名限定为 1,2,3 ,得到最终答案;

代码语言:javascript
复制
SELECT 
qry1.msisdn, 
qry1.cellname, 
qry1.throughput, 
(select count(*) from qry1 as tbl2 
where qry1.throughput < tbl2.throughput and qry1.msisdn = tbl2.msisdn)+1 AS rankN
FROM qry1
WHERE ((((select count(*) from qry1 as tbl2 where qry1.throughput < tbl2.throughput and qry1.msisdn = tbl2.msisdn)+1) In (1,2,3)));

回复 user 获取完整文件

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档