ACCESS–分組排名獲取常駐小區

  • 2019 年 12 月 26 日
  • 筆記

現如今,端到端感知優化越來越重要了,有時,我們需要獲取每個用戶的 TOPN 常駐小區。 假設我們有如下業務報表:

我們要獲取每個用戶的 TOP3 常駐小區,少量小區用 excel 處理就好了,但是一般這種用戶級報表都是幾百萬行,這個時候,數據庫就該上場了。

我們先給這個報表添加一列分組排名來標記每個用戶不同佔用小區的流量,然後篩選分組排名為1,2,3 就好了,今天看一下 ACCESS 如何實現。

1)首先對原表進行排序;

SELECT  user.msisdn,  user.cellname,  user.throughput  FROM [user]  ORDER BY user.msisdn, user.throughput DESC;

得到如下結果:

2)該表基礎上,建立子查詢得到分組排名;

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 ,得到最終答案;

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 獲取完整文件