首页 > 教程攻略 > ai教程 >Quick BI使用案例26:基于筛选条件的排行榜全局排名实现方案

Quick BI使用案例26:基于筛选条件的排行榜全局排名实现方案

来源:互联网 时间:2026-06-28 07:43:50

先简单交代一下背景——这个系列文章里的案例,都来自用户在实际使用中遇到的真实问题。我们把那些高频误区和小技巧整理出来,希望能帮你更顺畅地用Quick BI解决业务需求。

问题背景

一家大型连锁零售企业,想做一张“年度全国各区域销售额总排行榜”。管理层的需求很明确:通过“区域”查询控件筛选出几个区域(比如华南区和华北区),就能立刻看到它们在全国榜单里的真实名次——华南和华北可能是第2和第3名。但问题在于,如果直接用排行榜自带序号,一旦筛选,图表只显示被选中的区域,排名就会重置为1、2——这就没法反映它们在全国的真实位置了。

核心痛点

Quick BI排行榜图表样式中自带的序号,在筛选后会重新计算排名。你选了“华南”和“华北”,图表就只剩这两个区域,排名自然变成第1、第2,而不是它们在全国的真实位次。管理层要的是“在全国排第几”,不是“在筛选列表里排第几”。

解决方案

排行榜的本质,是展示指标在一个维度下的排名顺序,通常用Top N降序排列。要解决筛选后排名重置的问题,思路其实很简单:在数据准备阶段,提前用SQL的开窗函数RANK()算出每个区域基于总销售额的固定排名。把这个排名作为一个字段存进数据集,前端无论怎么筛选,这个“全国总排名”的值都不会变——它本身就是原始排序的静态快照。下面说说具体操作。

Step1. 确认数据表结构

假设数据库中有一张表 company_sales,主要字段有:

  • area:区域名称
  • order_amt:订单金额

Step2. 创建自定义SQL数据集

1. 在Quick BI中选择对应的数据源。
2. 点击右侧「SQL 创建数据集」按钮。

3. 输入以下自定义SQL(以MySQL数据库为例):

SELECT
  a.area,
  a.销售额,
  RANK() OVER (
    ORDER BY
      a.销售额 DESC
  ) AS 排名
FROM
  (
    SELECT
      area,
      SUM(order_amt) AS 销售额
    FROM
      company_sales
    GROUP BY
      area
  ) a

4. 点击「确认编辑」→ 关闭窗口 → 保存数据集。
注意关闭自定义SQL页面时,要点击右上角×,确认SQL编辑已完成。
5. 点击「保存」按钮保存数据集。

Step3. 配置排行榜字段

1. 点击「创建仪表板」,添加排行榜组件。
2. 排行榜默认会开启序号,需要在样式中将序号关闭,因为我们要用自己计算好的“排名”字段。

3. 排行榜字段配置如下:

  • 行(维度):选择 area
  • 主指标/度量:选择 销售额
  • 副指标/度量:选择 排名

Step4. 添加图表内查询控件

1. 点击排行榜右上角三个点,选择菜单「插入查询条件」。

2. 添加查询条件,关联字段选择 area;选项值来源选择“单个数据集”;查询字段和显示字段都选择 area

Step5. 最终效果

排行榜会展示各区域的完整销售额及固定排名:

用图表内的查询控件筛选“华南”和“华北”区域后,可以看到对应的全国销售额排名分别是第2和第3名——排名没有被重置,完美保留了全局顺序。