MySQL计算销售员昨日各指标综合得分_20161206

数据需求如上,新增重激活以15天未下单为界定
SELECT d.销售员,(日销售额得分*0.6+日新增客户数得分*0.15+日客单价得分*0.1+日客户平均产品数得分*0.15)AS 综合得分,日销售额,日客单价,日新增客户数 AS 日新增客户数,日客户平均产品数
FROM (#添加得分指标
SELECT c.*
,CASE WHEN 日销售额>=10000 THEN 100 WHEN 日销售额>=4000 AND 日销售额<10000 THEN 60+40/6000*(日销售额-4000) WHEN 日销售额<4000 THEN 0+60/4000* (4000-日销售额) ELSE NULL END AS 日销售额得分
,CASE WHEN 日客单价>=600 THEN 100 WHEN 日客单价>=450 AND 日客单价<600 THEN 60+40/150*(日客单价-450) WHEN 日客单价>=360 AND 日客单价<450 THEN 0+60/90*(450-日客单价) ELSE 0 END AS 日客单价得分
,CASE WHEN 日客户平均产品数>=6 THEN 100 WHEN 日客户平均产品数>=3 AND 日客户平均产品数<6 THEN 60+40/3*(日客户平均产品数-3) WHEN 日客户平均产品数>=1 AND 日客户平均产品数<3 THEN 0+60/2*(3-日客户平均产品数) ELSE 0 END AS 日客户平均产品数得分
,CASE WHEN 日新增客户数>=8 THEN 100 WHEN 日新增客户数>=2 AND 日新增客户数<8 THEN 60+40/6*(日新增客户数-2) WHEN 日新增客户数<2 THEN 0+60/2*(2-日新增客户数) ELSE 0 END AS 日新增客户数得分
FROM (#明细销售员日销售额 新增激活客户数 客单价 日客户平均产品数
SELECT a.*,IFNULL(b.日新增客户数,0) AS 日新增客户数
FROM (
SELECT 销售员,SUM(金额) AS 日销售额,SUM(金额)/COUNT(用户ID) AS 日客单价,AVG(产品数) AS 日客户平均产品数
FROM (
SELECT 销售员,用户ID,COUNT(产品ID) AS 产品数,SUM(金额) AS 金额
FROM (
SELECT 销售员,用户ID,产品ID,SUM(金额) AS 金额
FROM `a003_order`
WHERE 城市='郑州' AND DATE(订单日期)=DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY) AND 金额>0
GROUP BY 销售员,用户ID,产品ID
) AS a1
GROUP BY 销售员,用户ID
) AS a2
GROUP BY 销售员
ORDER BY SUM(金额) DESC
) AS a
LEFT JOIN (
SELECT 销售员,COUNT(用户ID) AS 日新增客户数
FROM (
SELECT b1.用户ID,b1.用户名称,昨日以前15天之前金额,昨日以前15天金额,昨日金额,b2.销售员,CASE WHEN 昨日以前15天之前金额 IS NULL AND 昨日以前15天金额 IS NULL THEN "新增" WHEN 昨日以前15天之前金额 IS NOT NULL AND 昨日以前15天金额 IS NULL THEN "重激活" WHEN 昨日以前15天金额 IS NOT NULL THEN "留存" ELSE NULL END 留存情况
FROM (
SELECT 用户ID,用户名称,SUM(IF(DATE(订单日期)=DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY),金额,NULL)) AS 昨日金额,
SUM(IF(DATE(订单日期)>=DATE_ADD(CURRENT_DATE,INTERVAL -16 DAY) AND DATE(订单日期)<DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY),金额,NULL)) AS 昨日以前15天金额,
SUM(IF(DATE(订单日期)<DATE_ADD(CURRENT_DATE,INTERVAL -16 DAY),金额,NULL)) AS 昨日以前15天之前金额
FROM a003_order
WHERE 城市="郑州" AND 金额>0 AND 用户ID IN (SELECT 用户ID FROM a003_order AS a WHERE 城市="郑州" AND DATE(订单日期)=DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY) AND 金额>0 GROUP BY 用户ID)
GROUP BY 用户ID
) AS b1
LEFT JOIN a003b_order_item AS b2 ON b1.用户ID=b2.用户ID
)AS b3
WHERE 留存情况<>'留存'
GROUP BY 销售员
) AS b ON a.销售员=b.销售员
) AS c
) AS d
MySQL计算销售员昨日各指标综合得分_20161206的更多相关文章
- SPSSAU新功能上线:高级公式、综合得分一键计算!
一直关注我们的朋友们一定会发现,近期SPSSAU增添了很多新功能. 我们精挑细选出6个最常使用的功能,介绍给大家,看看这些新功能你有没有解锁成功呢? 01 一键删除无效样本 “无效样本”功能中,添加了 ...
- MySQL 性能监控 4 大指标
[编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的 4 大指标. 文章系国内 ITOM 管理平台 OneAPM 编译呈现. MySQL 是什么? MySQL ...
- MySQL 性能监控4大指标——第二部分
[编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分介绍了前两个指标:查询吞吐量与查询执行性能.本文将继续介绍另两个指标:MySQL 连接与缓冲池 ...
- mysql计算时间差函数
MySql计算两个日期的时间差函数TIMESTAMPDIFF用法,只要用一句SQL语句就可以办到了. MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDI ...
- MySQL计算时间差
MySQL计算两个日期的时间差函数:TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval, datetime_expr1, datetime_expr2) interval ...
- mysql计算连续天数,mysql连续登录天数,连续天数统计
mysql计算连续天数,mysql连续登录天数,连续天数统计 >>>>>>>>>>>>>>>>>& ...
- mysql计算排名 转
from :http://www.cnblogs.com/aeiou/p/5719396.html http://www.cnblogs.com/zengguowang/p/5541431.html ...
- MySql计算两个日期的时间差函数
MySql计算两个日期时间的差函数: 第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. ...
- mysql计算排名
mysql计算排名,获取行号rowno 学生成绩表数据 SELECT * FROM table_score ORDER BY score DESC; 获取某个学生成绩排名并计算该学生和上一名学生成绩差 ...
随机推荐
- fastcoloredtextbox 中文不重叠
DrawLineChars方法: private void DrawLineChars(PaintEventArgs e, int firstChar, int lastChar, int iLine ...
- sqlserver OpenRowSet 对应的三种数据库驱动
在使用sqlserver数据库的OpenRowSet函数时,会遇到三种驱动方式: 1. MSDASQL驱动SELECT TOP 10 * FROM OPENROWSET('MSDASQL', 'DRI ...
- 排序算法总结(四)快速排序【QUICK SORT】
感觉自己这几篇都是主要参考的Wikipedia上的,快排就更加是了....wiki上的快排挺清晰并且容易理解的,需要注意的地方我也添加上了注释,大家可以直接看代码.需要注意的是,wikipedia上快 ...
- java common-io jar API
import org.apache.commons.beanutils.BeanUtils;public class Person { private String name; public Stri ...
- sass&compass&grunt
1. compass compile path/to/project//编译scss compass watch path/to/project//自动监视文件变化 2.mixin @include ...
- JdbcUtils 系列1
1.开发前准备 创建java pro为dbutils_1,没有lib目录,建一个即可 /dbutils_1/lib/mysql-connector-java-5.0.8-bin.jar 数据库搭建c3 ...
- input file上传文件扩展名限制
方法一(不推荐使用):用jS获获取扩展名进行验证: <script type="text/javascript" charset="utf-8"> ...
- java 泛型接口示例
/* * 泛型接口 */ interface Tool<t> { public void show(T t); //泛型方法 public <e> void print(E e ...
- MySQL日志恢复误删记录
1.查询日志是否开启 show variables like"log_"; 2.查询是用的哪个日志文件 show master status; 3.定位是在什么时间误删的 /usr ...
- makefile自动生成依赖关系
手工编写依赖关系不仅工作量大而且极易出现遗漏,更新也很难及时,修改源或头文件后makefile可能忘记修改.为了解决这个问题,可以用gcc的-M选项自动生成目标文件和源文件的依赖关系.-M选项会把包含 ...