hi,大家好!
今天,我们接着来讲新式图表!
在工业控制、质量管理(QC)及 ERP 系统开发中,帕累托图(Pareto Chart)是必不可少的分析工具。虽然 Excel 制作帕累托图很方便,但在 Access 开发的业务系统中,我们需要图表能动态响应数据库的变化(如按日期筛选、按产线过滤),而无需人工干预。
本文将从SQL 数据处理和图表控件配置两个核心维度,详细拆解如何在 Access 中实现动态帕累托图。什么是帕累托图?
帕累托图(Pareto Chart),又叫排列图或主次图,是一种将柱状图和折线图结合在一起的统计图表。它是质量管理(QC)七大手法之一,核心目的是为了“抓主要矛盾”。
帕累托图基于著名的“二八法则”(80/20 Rule):80% 的结果通常源于 20% 的原因。它由两部分组成:柱状图:按频率降序排列,展示每个问题的大小。折线图:展示累计百分比,帮助你找到那“关键的少数”。
今天我将从SQL 数据处理和图表控件配置两个核心维度,详细拆解如何在 Access 中实现动态帕累托图。
01、数据源准备
假设我们有一张缺陷记录表,具体字段如下图,表名我们就保存为帕累托图。自己在表中适当的放入一些数据。
02、核心难点:构建查询
Access 的 SQL 语法不支持窗口函数(如 SUM() OVER()),因此计算“累计值”通常有两种方案:子查询或 DSum 函数。为了在查询设计器中更易维护,我们推荐分步查询法。
第一步:基础聚合先将原始数据按缺陷类型进行汇总,并按数量降序排列。
新建一个查询,查询名称为:帕累托图总计
SELECT
缺陷,
Sum(次数) AS 总次数
FROM
帕累托图
GROUP BY
缺陷
ORDER BY
Sum(次数) DESC;第二步:计算累计占比
这是最关键的一步。我们需要基于
计算三个指标:总数量、累计数量、累计占比。
新建一个查询,保存查询为帕累托图查询,SQL 逻辑如下:
-- 1. 计算总数量 (作为分母)
-- 2. 计算累计数量 (Running Sum)
-- 逻辑:计算所有数量大于等于当前行数量的记录之和
-- 3. 计算累计百分比
SELECT
A.缺陷,
A.总次数,
(
SELECT
Sum(总次数)
FROM
帕累托图总计
) AS GrandTotal,
DSum ("总次数", "帕累托图总计", "总次数 >= " & [A].[总次数]) AS RunningSum,
Format([RunningSum] / [GrandTotal], "Percent") AS CumulativePct
FROM
帕累托图总计 AS A
ORDER BY
A.总次数 DESC;运行结果:
注意:这个查询就是模拟了帕累托图的计算。这个数据源就可以放到老式的图表中了,但这里我们是用新式图表,不需要这个查询,我们接着往下。
03、新建图表控件
还是一样,我创建一个新的窗体,在窗体上放置一下新的图表控件。
04、添加数据源
到这里我们就可以来添加数据源了,具体如下图:
注:我们这里的数据源用的是第一个查询,不要添加错了。
05、运行
最后,我们运行看一下效果。
OK,到这步你就完成了一个完美的帕累托图。在 Access 中开发帕累托图,本质上是 SQL 数据处理能力 与 可视化能力 的结合。
喜欢这篇文章吗?欢迎点赞、在看、转发,让更多 Access 爱好者看到!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。