销售需求丨奖金权重分配法

2024-02-04 02:58

本文主要是介绍销售需求丨奖金权重分配法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

白茶最近在和小伙伴沟通的时候,经常能遇到一些奇奇怪怪的需求,后来白茶仔细一合计,嗯,妥妥的中国式报表,满足!

BOSS:我花钱雇你来,不是要你觉得,我要我觉得!

白茶:…(@@#¥¥!)好。

先来看看本期的示例文件:

就这么一份示例文件,看起来很简单对吧?

来,我们来看看需求:

1、首先,要求出这个月人工费用的合计;

2、其次,要求出每个人工资的分配占比;

3、并且,根据占比求出个人奖金;

4、然后,求出每个人的实发工资;

5、最后,这些要体现在一个表里。

这个需求,白茶也是醉了,但是木有办法,还得继续啊,将数据导入到PowerBI中,结果如下:

(示例文件会放到知识星球中,小伙伴们可以搜索“PowerBI丨需求圈”,文章结尾处会有二维码。)

将数据放入到Table中查看,结果如图。

编写基础的DAX代码:

工资聚合 =
SUM ( '示例'[工资] )

结果如下:

到这里,所有的准备工作已经完成了。

咱来思考一下思路,因为要求所有的结果都需要呈现在一个表格里面,那么就需要在写DAX的时候,每一段代码都要绕开“奖金”这一项,让其不显示,同时总计栏还要计算无误

问题思考清楚了,开始编写代码:

工资占比 =
VAR ALLMO =CALCULATE ( [工资聚合], FILTER ( ALL ( '示例'[名字] ), '示例'[名字] <> "奖金" ) )
VAR EVERY =DIVIDE ( [工资聚合], ALLMO )
VAR RESULT =IF ( MAX ( '示例'[名字] ) <> "奖金", EVERY, BLANK () )
RETURNRESULT

先放在Table中查看,再来解释含义:

ALLMO,在这里的作用是求出不包含“奖金”这一项的其他所有项目的工资总和。

EVERY,在这里是求出每一项占ALLMO的比例,注意:这里**包含“奖金”**这一项。

RESULT,利用IF的判断,将奖金这一项的显示结果判断为空值,其他项目正常显示。

最后输出结果。

虽然求出每一项的占比了,也不影响后续的计算,但是按照中国式报表的需求,想想我们的BOSS,那肯定是要总计显示的啊!

哎,没辙,编写如下代码:

优化工资占比 =
SUMX (SUMMARIZE ( '示例', '示例'[名字] ),IF ('示例'[名字] <> "奖金",DIVIDE ([工资聚合],CALCULATE ( [工资聚合], FILTER ( ALL ( '示例'[名字] ), '示例'[名字] <> "奖金" ) ),BLANK ()))
)

先来看看结果,再解释:

这次的结果没有任何问题了。

白茶将代码分为三段解释:

首先是IF作为一组,这组代码中判断是否为“奖金”,TURE返回各项占比,否则返回空值。

其次,利用SUMMARIZE构建可见组合。这个组合就是当IF判断不为空时,由IF为SUMMARIZE提供对应项目的值。空值不显示

最后,利用SUMX迭代循环的特性,求出SUMMARIZE这个虚拟表IF判断值

求出各项占比了,后面的就简单了。

编写奖金代码:

应分奖金 =
VAR MONEY =CALCULATE ( [工资聚合], FILTER ( ALL ( '示例'[名字] ), '示例'[名字] = "奖金" ) )
VAR TOL = MONEY * [优化工资占比]
RETURNTOL

结果如图:

编写实发工资代码:

实发工资 =
IF ( MAX ( '示例'[名字] ) <> "奖金", [工资聚合] + [应分奖金], BLANK () )

结果:

会发现总计显示还是不对,咋整,优化代码呗!

这里有两种解法:

方法一:

实发工资FILTER写法 =
SUMX ( FILTER ( VALUES ( '示例'[名字] ), '示例'[名字] <> "奖金" ), [工资聚合] + [应分奖金] )

结果:

这种是利用FILTER+VALUES函数构建了一个没有奖金项目的虚拟表,最后利用SUMX汇总。

方法二:

实发工资SUMMARIZE写法 =
SUMX ( SUMMARIZE ( '示例', '示例'[名字] ), IF ( '示例'[名字] <> "奖金", [工资聚合] + [应分奖金] ) )

结果:

这是利用SUMMARIZE函数搭配IF的使用方法。最后利用SUMX函数汇总。

这里白茶说一下两段代码的区别:

FILTER是在构建表的时候,就将“奖金”这个项目踢出去了。最后SUMX汇总是根据表汇总的,表中都没有“奖金”这一项,那么后面的结果也当然没有了。

SUMMARIZE函数,是先判断后面的计算值的,如果IF的判断为空的话,那么虚拟表就没有这一项,因为它只显示可见组合。最后SUMX汇总可见项。

二者一个是从表出发,一个是从结果出发,结果都是一样的。

小伙伴们,GET了么?
(BOSS:好!漂亮!)

这里是白茶,一个PowerBI的初学者。

下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。
(这个星球里面有白茶之前所有的案例文件。)

ID:Storysming

这篇关于销售需求丨奖金权重分配法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/676183

相关文章

如何用外呼工具和CRM管理系统形成销售闭环

使用外呼工具和CRM管理系统形成销售闭环是一个系统性的过程,它涉及客户数据的整合、个性化的营销活动、销售与市场活动的协作、顾客行为的追踪与理解以及营销成效的评估与优化等多个环节。 以下是如何将外呼工具和CRM管理系统有效结合以形成销售闭环的步骤: 1. 客户数据的整合与分析    - 外呼工具在与客户进行初步沟通时,会收集到客户的基本信息和初步需求。    - 这些信息随后被输入到CRM管

mysql 如何分配root账号创建数据库的权限

1.mysql 如何分配root账号创建数据库的权限 在 MySQL 中,root 用户通常具有所有的权限,包括创建数据库的权限。但是,如果我们想要为另一个用户分配创建数据库的权限,或者想要限制 root 用户对某个特定数据库或服务器的权限(尽管这在实际操作中并不常见,因为 root 用户通常应该是无限制的),我们需要按照以下步骤进行操作。 这里我将解释如何为一个新的 MySQL 用户分配创建

力扣SQL50 销售分析III having + 条件计数

Problem: 1084. 销售分析III 👨‍🏫 参考题解 Code select s.product_id,p.product_namefrom sales s left join product pon s.product_id = p.product_idgroup by product_idhaving count(if(sale_date between

Java项目:基于SSM框架实现的精品酒销售管理系统分前后台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的精品酒销售管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值 二、技术实现 jdk版本:1.8 及以上 ide工具:IDEA或者eclipse 数据库: mysql5.7 后端:s

java基于ssm+jsp 汽车在线销售系统

1 前台功能模块 网站首页 网页首页汽车在线销售系统模块如下:首页、汽车信息、新闻资讯、留言反馈、我的收藏管理等功能图1 图1网页首页 网页前台车辆信息效果图如图2所示 图2 车辆信息界面图 2  管理员功能模块    管理员输入个人的账号、密码登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的账号、密码不正确,数据库就会提示出错误的信息提示,同时会提示管理

软件需求开发的18般武艺

在《软件工程最佳实践》一书中,罗列了18种软件需求方法论,这里逐一介绍如下: 1、引入用户代表的敏捷开发需求 “用户代表”代表的是用户,决定的是需求。有了用户代表,需求的确认和变更,以及需求优先顺序的确定,都会便捷很多。这种方法完美契合敏捷的“交流胜于文档”的思想。唯一的问题是,这种方法论只能适用于小型软件的开发,对于大型软件来说,它就无能为力;甚至某些特定的嵌入式系统软件,如燃油喷射控制系统

电商平台生活用品销售数据分析与应用

摘 要 在当前互联网飞速发展的时代,计算机应用给我们的工作生活带来了极大的便利。如今我们的生活离不开电商平台,其随之而来的是各种各样的销售数据与消费者信息,这些数据和信息的分析应用成为了当前互联网领域研究的重要部分。 本论文以基于Python的电商平台生活用品销售数据分析与应用为研究主题。采用了流行的Python Web框架Django,使得系统易于扩展和维护。在数据获取方面,采用爬虫技术获取淘

【Rust日报】 2019-09-01 - default-boxed:让结构体定义的时候,直接分配在堆上

使用 React, Gatsby 和 Wavelet 构建一个去中心化的博客 Wavelet 是 perlin-network 的一个子项目。 Wavelet is an open ledger for writing scalable mission-critical, decentralized WebAssembly application (https://wavelet.perli

基于SpringBoot+Vue汽车配件销售管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热

怎么判断文件 fileoutPutStream已经拷贝成功? 项目需求是判断fileInputStream已经拷贝

要判断文件 `fileoutPutStream` 已经拷贝成功,可以通过以下几个步骤来实现: 1. **确保所有数据都已写入**:    使用 `FileOutputStream` 的 `getFD().sync()` 方法,这会强制将所有未写的数据写入到磁盘上。 2. **检查流是否关闭成功**:    在关闭流之后检查是否有异常抛出。如果流关闭时没有抛出异常,这通常意味着数据已经被成功写入