一个人力资源咨询集团通过网络爬虫采集手段将多个知名招聘网站上发布的求职和招聘等信息准实时采集到自己的库里,形成一个数据量浩大的招聘信息库,跟踪全国招聘和求职的行业、工种、职位、待遇等信息,并通过商业智能系统,开展职业职位供求及趋势等相关统计分析。这家公司竟然用SSAS OLAP Cube多维数据集容纳如此数量级的数据,广告维成员包含了每一个广告条目。该商业智能团队的开发人员咨询如何用MDX求解薪水中位数、四分位数(Median,Quartile)等。

以下是对Median、Q1、Q3等问题的MDX解答:

1、MDX中位数(Median)求解

中位数(median)是对长度为n的系列数据,根据数据大小排列得到的位于[(n+1)/2]位置上的数据。当变量值的项数N为奇数时,处于中间位置的变量值即为中位数;当N为偶数时,中位数则为处于中间位置的2个变量值的平均数,即(M1+M2)/2。中位数是以它在所有标志值中所处的位置确定的全体单位标志值的代表值,不受分布数列的极大或极小值影响,从而在一定程度上提高了中位数对分布数列的代表性。

1、求解所有招聘广告薪水待遇的中位数median.MDX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//商业智能之路(letusbi.com), Begin
 
WITH
 
//采集到的招聘广告条目(薪水测量值非空)
Set RawAdvSet AS
     NonEmpty([Advertisement].[Adv Id].members,[Measures].[Salary Sum ])
 
//将广告条目按照薪水排序
 
Set AdvSet AS
     Order (RawAdvSet, [Measures].[Salary Sum ], DESC )
 
//招聘广告总数
 
Member [measures].[AdvCount] as
     Count (AdvSet)
 
//招聘广告条目中间位置
 
Member [Measures].[MedianReal] as
     ([measures].[AdvCount]-1) * 50 / 100
 
Member [Measures].[MedianInt] as
     Int ([Measures].[MedianReal])
 
Member [Measures].[MedianFrac] as
     [Measures].[MedianReal]- [Measures].[MedianInt]
 
//薪水“中位数”(低)
 
Member [Measures].[MedianLow] as
     ([AdvSet].Item([Measures].[MedianInt]).Item(0),[Measures].[Salary Sum ])
 
//薪水“中位数”(高)
 
Member [Measures].[MedianHigh] as
     ([AdvSet].Item([Measures].[MedianInt] + 1).Item(0),[Measures].[Salary Sum ])
 
//实际得到薪水的中位数
 
Member [Measures].[Salary Median] as
     ([Measures].[MedianLow] * [Measures].[MedianFrac])
     +([Measures].[MedianHigh] * (1 - [Measures].[MedianFrac]))
 
//商业智能之路(letusbi.com), End

2、四分位数(Quartile)求解

四分位数(Quartile)在统计时把所有数值由小到大排列并分成四等份,处于三个分割点位置的得分就是四分位数,分别如下:

第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。

第二四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。

第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

第三四分位数与第一四分位数的差距又称四分位距(InterQuartile Range,IQR)。

2、求解所有招聘广告薪水待遇的四分位数quantile.MDX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// 1)求解1Q
//商业智能之路(letusbi.com), Begin
 
WITH
 
Set RawAdvSet AS
     NonEmpty([Advertisement].[Adv Id].members,[Measures].[Salary Sum ])
 
Set AdvSet AS
     Order (RawAdvSet, [Measures].[Salary Sum ], DESC )
 
Member [Measures].[1QReal] as
     ([measures].[AdvCount]-1) * 25 / 100
 
Member [Measures].[1QInt] as
     Int ([Measures].[1QReal])
 
Member [Measures].[1QFrac] as
     [Measures].[1QReal]- [Measures].[1QInt]
 
Member [Measures].[1QLow] as
     ([AdvSet].Item([Measures].[1QInt]).Item(0),[Measures].[Salary Sum ])
 
Member [Measures].[1QHigh] as
     ([AdvSet].Item([Measures].[1QInt] + 1).Item(0),[Measures].[Salary Sum ])
 
//实际得到薪水的四分位数quantile(1Q)
 
Member [Measures].[Salary 1Q] as
     ([Measures].[1QLow] * [Measures].[1QFrac])
     +([Measures].[1QHigh] * (1 - [Measures].[1QFrac]))
 
// 2)求解3Q
 
//商业智能之路(letusbi.com), Begin
Member [Measures].[3QReal] as
     ([measures].[AdvCount]-1) * 75 / 100
 
Member [Measures].[3QInt] as
     Int ([Measures].[3QReal])
 
Member [Measures].[3QFrac] as
     [Measures].[3QReal]- [Measures].[3QInt]
 
Member [Measures].[3QLow] as
     ([AdvSet].Item([Measures].[3QInt]).Item(0),[Measures].[Salary Sum ])
 
Member [Measures].[3QHigh] as
     ([AdvSet].Item([Measures].[3QInt] + 1).Item(0),[Measures].[Salary Sum ])
 
//实际得到薪水的四分位数quantile(3Q)
 
Member [Measures].[Salary 3Q] as
     ([Measures].[3QLow] * [Measures].[3QFrac])
     +([Measures].[3QHigh] * (1 - [Measures].[3QFrac]))
 
//商业智能之路(letusbi.com), End

原文链接:
MDX示例:求解中位数、四分位数(median、quartile)

MDX示例:求解中位数、四分位数(median、quartile)的更多相关文章

  1. MDX示例:求解中位数、四分位数(median、quartile)

    一个人力资源咨询集团通过网络爬虫采集手段将多个知名招聘网站上发布的求职和招聘等信息准实时采集到自己的库里,形成一个数据量浩大的招聘信息库,跟踪全国招聘和求职的行业.工种.职位.待遇等信息,并通过商业智 ...

  2. MDX示例:求解众数(mode)

    在统计学中,众数(Mode)是样本观测值在频数分布表中频数最多的那一组的组中值,主要应用于大面积普查研究之中,众数在一组数据中可能会有好几个.简单的说,众数就是一组数据中占比例最多的一个或几个数.MD ...

  3. [Swift]LeetCode295. 数据流的中位数 | Find Median from Data Stream

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

  4. C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4005 访问. 给定两个大小为 m 和 n 的有序数组 nums1 ...

  5. Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java

    Google面试题 股市上一个股票的价格从开市开始是不停的变化的,需要开发一个系统,给定一个股票,它能实时显示从开市到当前时间的这个股票的价格的中位数(中值). SOLUTION 1: 1.维持两个h ...

  6. 数据流中的中位数 Find Median from Data Stream

    2019-04-17 16:34:50 问题描述: 问题求解: class MedianFinder { PriorityQueue<Integer> smaller; PriorityQ ...

  7. vertica 中位数函数 MEDIAN 的使用

    中位数函数:MEDIAN 使用表达式:MEDIAN ( expression ) OVER ( [ window‑partition‑clause ] ) 准备测试数据: ), name ), sal ...

  8. 四分位数及matlab实现

    四分位数(quantile),解释及调用形式如下. quantile(x,y,z)的三个参数的说明如下:x表示要求的矩阵或者向量:y的取值为表示要求的分位数,如四分之一中位数0.25,四分之三中位数0 ...

  9. 两个有序数组的中位数(第k大的数)

    问题:两个已经排好序的数组,找出两个数组合并后的中位数(如果两个数组的元素数目是偶数,返回上中位数). 感觉这种题目挺难的,尤其是将算法完全写对.因为当初自己微软面试的时候遇到了,但是没有想出来思路. ...

随机推荐

  1. ubuntu12.04下同步cm10源码(个人记录,当作笔记)

    环境:AMD N850,4G,ubuntu12.04 x64, 老规矩,先是各种依赖: sudo apt-get install git-core gnupg flex bison python ra ...

  2. uml(1)--概述

    面象对象的课程已经学到UML建模部分, 为了应付老师布置了的作业,须重新学习UML 故趁此机会将自己所学,所看做个记录,不为点赞, 只为加深记忆,加深理解…不是都说写一遍等于读十遍嘛…… 对于UML ...

  3. document.body.scrollTop vs document.documentElement.scrollTop

    window.addEventListener("scroll", function () { if (document.body.scrollTop >= window.i ...

  4. mobile js

    5个jQuery的备选轻量级移动客户端开发(Mobile development)类库 http://www.gbin1.com/technology/jquerymobile/20120423mob ...

  5. hdu Examining the Rooms

    这道题的知识点第一次听说 ,就是应用斯特林数.题目的意思是给你房间数N,和最多能破门的个数,让你求能全部把房间打开的概率! a[i][j]=a[i-1][j-1]+(i-1)*a[i-1][j]; # ...

  6. java web: eclipse & maven & jetty & struts2 & mysql = 简单登录页面

    第一次接触java web开发,花费了一天半的时间,写了个简单的登录页面,以此文为记. 开发工具 Eclipse Luna Release (4.4.0) 已集成maven,maven目前的体会就是管 ...

  7. 【转】四步完成win7 ubuntu双系统安装(硬盘,无需光驱)

    原文网址:http://ifeiyang.cn/archives/1835.html 适用环境: 理论上win7.vista系统32位或64位均可.ubuntu适用与10.X版本,且ubuntu-10 ...

  8. NOI2015 小园丁与老司机

    http://uoj.ac/problem/132 这道题前2行的输出比较容易,就是简单的动态规划,然后第3行就是比较少见的有上下界的最小流. 前2行比较容易,我们讨论一下第3行的解法吧. 比如第1个 ...

  9. Hadoop开发遇到的问题之reduce卡住

    遇到的问题描述:在hadoop上面执行程序,程序运行之后能够正常执行.一切似乎都是正常的,然而过了一段时间之后程序便开始阻塞直到程序超时退出(如下). 14/08/19 21:17:51 INFO m ...

  10. WEB 移动网站 手机点击 打电话 发短信

    原文地址: http://www.blesswe.com/portal.php?mod=view&aid=428 我们在手机浏览网页是希望用户看到手机号码点击就可以直接打电话或发短信,下面我们 ...