数据需求如上,新增重激活以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的更多相关文章

  1. SPSSAU新功能上线:高级公式、综合得分一键计算!

    一直关注我们的朋友们一定会发现,近期SPSSAU增添了很多新功能. 我们精挑细选出6个最常使用的功能,介绍给大家,看看这些新功能你有没有解锁成功呢? 01 一键删除无效样本 “无效样本”功能中,添加了 ...

  2. MySQL 性能监控 4 大指标

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的 4 大指标. 文章系国内 ITOM 管理平台 OneAPM 编译呈现.    MySQL 是什么? MySQL  ...

  3. MySQL 性能监控4大指标——第二部分

    [编者按]本文作者为 John Matson,主要介绍 mysql 性能监控应该关注的4大指标. 第一部分介绍了前两个指标:查询吞吐量与查询执行性能.本文将继续介绍另两个指标:MySQL 连接与缓冲池 ...

  4. mysql计算时间差函数

    MySql计算两个日期的时间差函数TIMESTAMPDIFF用法,只要用一句SQL语句就可以办到了. MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDI ...

  5. MySQL计算时间差

    MySQL计算两个日期的时间差函数:TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval, datetime_expr1, datetime_expr2) interval ...

  6. mysql计算连续天数,mysql连续登录天数,连续天数统计

    mysql计算连续天数,mysql连续登录天数,连续天数统计 >>>>>>>>>>>>>>>>>& ...

  7. mysql计算排名 转

    from :http://www.cnblogs.com/aeiou/p/5719396.html http://www.cnblogs.com/zengguowang/p/5541431.html ...

  8. MySql计算两个日期的时间差函数

    MySql计算两个日期时间的差函数: 第一种:TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND.SECOND. MINUTE. HOUR. DAY. ...

  9. mysql计算排名

    mysql计算排名,获取行号rowno 学生成绩表数据 SELECT * FROM table_score ORDER BY score DESC; 获取某个学生成绩排名并计算该学生和上一名学生成绩差 ...

随机推荐

  1. angularjs 迭代器

    angularjs 迭代器可以使用管道字符(|)添加到表达式和指令中. 有以下五种转换数据的迭代器: (1)currency-格式化数字为货币格式. (2)filter-从数组中选择一个一个子集. ( ...

  2. UITabBarController常见代理方法的使用

    //下面两个函数是成对出现的若第一个函数返回YES那么第二个方法自动触发执行 //是否允许选择不同的Item触发后续操作,YES是允许,NO是不允许 -(BOOL)tabBarController:( ...

  3. 解决ASP.NET 自定义报表部署到IIS浏览时出现ASP.NET会话已结束问题

    进到公司开始接触的项目就要做报表,原系统使用的是水晶报表,但是水晶报表展示方面美观方面不怎么好需客户需要美化一下.自定义报表与水晶报表之前都没有接触过,自己先学了一下这两种报表,后面觉得自定义报表设计 ...

  4. C# WinForm 应用程序 开启Console窗口

    /********************************************************************************* * C# WinForm 应用程序 ...

  5. js常用字符串方法汇总

    concat()将两个或多个字符的文本组合起来,返回一个新的字符串. var a = "hello"; var b = ",world"; var c = a. ...

  6. SQLite手工注入方法小结

    SQLite 官网下载:www.sqlite.org/download.html sqlite管理工具:http://www.yunqa.de/delphi/products/sqlitespy/in ...

  7. 2016HUAS_ACM暑假集训1A - 士兵队列训练问题

    这道题我觉得是个简单的模拟题,整理一下思路,弄清楚题意就好了. 新手上路,采用两个数组进行交互赋值,用的方法也比较笨,思路差不多都在代码的注释里了. 下面是题目大意: 首先将士兵从1开始编号(士兵总数 ...

  8. 数迹学——Asp.Net MVC4入门指南(3):添加一个视图

    方法返回值  ActionResult(方法执行后的结果) 例子1 public ActionResult methordName() { return "string"; } 例 ...

  9. trace工具,c++/c#/python

    下载地址: http://files.cnblogs.com/files/wjx0912/xtrace.rar 很方便的调试工具,已在c#,  vc2015, python2.7.10环境下测试. 闭 ...

  10. 我终于搞清楚为什么谷歌地图获取到的联通3G基站与大家手头的基站表不同了

    我终于搞清楚这个问题了,大家使用谷歌地图手机版.MobileTrack以及网优用的FieldTest获取到的WCDMA基站Cellid为什么不是大家手头的CellTrack91或基站表里的数字了... ...