zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    阿里云POLARDB荣膺2019中国数据库年度最佳创新产品
    实时大数据开发难、运维难、应用难?来,一站解决!
    阿里云应用实时监控 ARMS 再升级,支持 Prometheus 开源生态
    一线实践 | 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
    使用DataX同步MaxCompute数据到TableStore(原OTS)优化指南
    Twitter 宣布抛弃 Mesos,全面转向Kubernetes
    阿里云Kubernetes服务上使用Tekton完成应用发布初体验
    Knative Tracing 介绍
    不断被取代的传统职业:快速发展的智能交互
    bzoj1433: [ZJOI2009]假期的宿舍
  • 原文地址:https://www.cnblogs.com/Mr-Cxy/p/6139239.html
Copyright © 2011-2022 走看看