如何进行帕累托分析工作(帕累托分析法基本原理)
导语:如何进行帕累托分析?
【面试题】有一张“学生成绩表”,包含3个字段:学号、课程、成绩。
问题:找出每门课程A类和B类的学生,判断标准是累计占比,0~60%的记为A类,60%~85%记为B类
【解题思路】
什么是二八定律?
二八定律是说在任何一组东西中,最重要的只占一小部分,约20%。比如家店铺,卖的最多的商品数只占20%
什么是ABC分类法?
ABC分类方法是二八定律衍生出来的一种分类方法,由于它把对象分成A、B、C三类,所以叫做ABC分类法,也叫帕累托分析
ABC分类法计算步骤:
1)将分析对象由大到小排序
2)计算每一个对象及排在该对象之前的累计占比
3)将累计占比为0~60%的记为A类,60%~85%记为B类,85%以上记为C类
1. 解题思路
题目要求:找出每门课程A类和B类的学生,判断标准是累计占比,0~60%的记为A类,60%~85%记为B类;
所以,核心问题就是计算累计占比。
那么,什么是累计占比呢?
课程A的累计占比 = 课程A的累计成绩 / 课程A的总成绩
“课程总成绩”很好理解,也就是每门课程的所有学生的成绩总和。
“课程累计成绩”的定义是:
1)每门课程的学生成绩由大到小排序;
2)计算每一个学生及排在该学生之前的课程累计成绩。
举个例子,下表数学课程里按成绩从大到小排序是96、65、55。学号(S002)的数学课程累计成绩是96,学号(S001)的数学课程累计成绩是96+65=161,依此类推。
2. 课程累计成绩
累计问题要想到用窗口函数来解决。
查询结果:
把这个SQL查询查询结果命名为子查询t1。
这里使用了窗口函数的rows between … and …用法。含义是对“起始行”至“终止行”的字段1求和。
对于这道题要求得“每一个学生及排在该学生之前的课程累计成绩”,所以,“起始行”就是每个窗口的第一行(unbounded preceding),“终止行”是当前行(current row)。
3. 课程总成绩
根据指标定义:课程A的累计占比 = 课程A的累计成绩 / 课程A的总成绩。
前面得到分子:每个课程的累计成绩。
还需要得到分母:每个课程的课程总成绩。
每个课程的课程总成绩,涉及到“每个”要想到用“汇总分析”,按课程分组(group by),汇总(求职成绩和sum)
查询结果:
把这个SQL查询查询结果命名为子查询t2。
3.累计占比
根据指标定义:课程A的累计占比 = 课程A的累计成绩 / 课程A的总成绩。
为了方便计算,需要将上面两步得到结果汇总到一个表里。
将第1步得到的每个课程的累计成绩查询结果记为表t1,第2步得到的每个课程的总成绩查询结果记为表t2,进行多表联结。
把第1、2步的子查询t1、t2代入上面的SQL语句,就得到了:
查询结果
把这个SQL查询查询结果命名为子查询t3
4.分类
题目要求的是:找出每门课程A类和B类的学生,判断标准是累计占比,0~60%的记为A类,60%~85%记为B类
把第3步的子查询t3代入上面的SQL语句,就得到了:
【本题考点】
1.考查对帕累托分析思路的理解;
2.考查对窗口函数的了解,以及灵活使用来解决业务问题;
3.考查对多表联结的了解。
本文内容由快快网络小茹创作整理编辑!