热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2016年11月7日周一:Kettle系统监测销售团队每日任务完成情况分析

本文介绍了2016年11月7日对Kettle系统中销售团队每日任务完成情况的分析。具体包括:目标表中的激活客户数是指当月前30天内未下过单的客户;通过SQL查询语句获取销售员的当月销售确认金额、订单总额、首单数量及激活客户数量等关键指标,以便全面评估销售业绩。

1、上面是目标表,其中激活客户数为当月每天之前30天未下单的客户

2、写SQL

SELECT a.销售员,c.当月销售确认额,a.当月订单额,b.当月首单数,b.当月激活数,
a1,b.b1,b.c1,a2,b.b2,b.c2,a3,b.b3,b.c3,a4,b.b4,b.c4,a5,b.b5,b.c5,a6,b.b6,b.c6,a7,b.b7,b.c7,a8,b.b8,b.c8,a9,b.b9,b.c9,a10,b.b10,b.c10,a11,b.b11,b.c11,a12,b.b12,b.c12,a13,b.b13,b.c13,a14,b.b14,b.c14,a15,b.b15,b.c15,
a16,b.b16,b.c16,a17,b.b17,b.c17,a18,b.b18,b.c18,a19,b.b19,b.c19,a20,b.b20,b.c20,a21,b.b21,b.c21,a22,b.b22,b.c22,a23,b.b23,b.c23,a24,b.b24,b.c24,a25,b.b25,b.c25,a26,b.b26,b.c26,a27,b.b27,b.c27,a28,b.b28,b.c28,
a29,b.b29,b.c29,a30,b.b30,b.c30,a31,b.b31,b.c31
FROM (SELECT a1.销售员,SUM(a1.金额) AS 当月订单额,#当月订单额及每天订单额SUM(IF(DAY(a1.订单日期)&#61;1,金额,NULL)) AS a1,SUM(IF(DAY(a1.订单日期)&#61;2,金额,NULL)) AS a2,SUM(IF(DAY(a1.订单日期)&#61;3,金额,NULL)) AS a3,SUM(IF(DAY(a1.订单日期)&#61;4,金额,NULL)) AS a4,SUM(IF(DAY(a1.订单日期)&#61;5,金额,NULL)) AS a5,SUM(IF(DAY(a1.订单日期)&#61;6,金额,NULL)) AS a6,SUM(IF(DAY(a1.订单日期)&#61;7,金额,NULL)) AS a7,SUM(IF(DAY(a1.订单日期)&#61;8,金额,NULL)) AS a8,SUM(IF(DAY(a1.订单日期)&#61;9,金额,NULL)) AS a9,SUM(IF(DAY(a1.订单日期)&#61;10,金额,NULL)) AS a10,SUM(IF(DAY(a1.订单日期)&#61;11,金额,NULL)) AS a11,SUM(IF(DAY(a1.订单日期)&#61;12,金额,NULL)) AS a12,SUM(IF(DAY(a1.订单日期)&#61;13,金额,NULL)) AS a13,SUM(IF(DAY(a1.订单日期)&#61;14,金额,NULL)) AS a14,SUM(IF(DAY(a1.订单日期)&#61;15,金额,NULL)) AS a15,SUM(IF(DAY(a1.订单日期)&#61;16,金额,NULL)) AS a16,SUM(IF(DAY(a1.订单日期)&#61;17,金额,NULL)) AS a17,SUM(IF(DAY(a1.订单日期)&#61;18,金额,NULL)) AS a18,SUM(IF(DAY(a1.订单日期)&#61;19,金额,NULL)) AS a19,SUM(IF(DAY(a1.订单日期)&#61;20,金额,NULL)) AS a20,SUM(IF(DAY(a1.订单日期)&#61;21,金额,NULL)) AS a21,SUM(IF(DAY(a1.订单日期)&#61;22,金额,NULL)) AS a22,SUM(IF(DAY(a1.订单日期)&#61;23,金额,NULL)) AS a23,SUM(IF(DAY(a1.订单日期)&#61;24,金额,NULL)) AS a24,SUM(IF(DAY(a1.订单日期)&#61;25,金额,NULL)) AS a25,SUM(IF(DAY(a1.订单日期)&#61;26,金额,NULL)) AS a26,SUM(IF(DAY(a1.订单日期)&#61;27,金额,NULL)) AS a27,SUM(IF(DAY(a1.订单日期)&#61;28,金额,NULL)) AS a28,SUM(IF(DAY(a1.订单日期)&#61;29,金额,NULL)) AS a29,SUM(IF(DAY(a1.订单日期)&#61;30,金额,NULL)) AS a30,SUM(IF(DAY(a1.订单日期)&#61;31,金额,NULL)) AS a31FROM &#96;a003_order&#96; AS a1WHERE a1.销售员 IS NOT NULL AND a1.城市&#61;"北京" AND DATE_FORMAT(a1.订单日期,"%Y%m")&#61;DATE_FORMAT(DATE_ADD(CURRENT_DATE,INTERVAL - 1 DAY),"%Y%m") AND a1.订单日期<CURRENT_DATE GROUP BY a1.销售员
)
AS a
LEFT JOIN (SELECT b5.销售员,SUM(IF(b5.激活情况&#61;"新增",1,NULL))AS 当月首单数,SUM(IF(b5.激活情况&#61;"重激活",1,NULL)) AS 当月激活数,#首单数SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;1,1,NULL)) AS b1,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;2,1,NULL)) AS b2,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;3,1,NULL)) AS b3,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;4,1,NULL)) AS b4,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;5,1,NULL)) AS b5,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;6,1,NULL)) AS b6,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;7,1,NULL)) AS b7,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;8,1,NULL)) AS b8,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;9,1,NULL)) AS b9,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;10,1,NULL)) AS b10,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;11,1,NULL)) AS b11,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;12,1,NULL)) AS b12,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;13,1,NULL)) AS b13,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;14,1,NULL)) AS b14,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;15,1,NULL)) AS b15,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;16,1,NULL)) AS b16,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;17,1,NULL)) AS b17,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;18,1,NULL)) AS b18,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;19,1,NULL)) AS b19,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;20,1,NULL)) AS b20,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;21,1,NULL)) AS b21,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;22,1,NULL)) AS b22,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;23,1,NULL)) AS b23,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;24,1,NULL)) AS b24,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;25,1,NULL)) AS b25,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;26,1,NULL)) AS b26,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;27,1,NULL)) AS b27,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;28,1,NULL)) AS b28,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;29,1,NULL)) AS b29,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;30,1,NULL)) AS b30,SUM(IF(b5.激活情况&#61;"新增" AND DAY(b5.当月首单日期)&#61;31,1,NULL)) AS b31,#SUM(IF(b5.激活情况&#61;"重激活",1,NULL)) AS 当月激活数,#激活数SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;1,1,NULL)) AS c1,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;2,1,NULL)) AS c2,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;3,1,NULL)) AS c3,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;4,1,NULL)) AS c4,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;5,1,NULL)) AS c5,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;6,1,NULL)) AS c6,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;7,1,NULL)) AS c7,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;8,1,NULL)) AS c8,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;9,1,NULL)) AS c9,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;10,1,NULL)) AS c10,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;11,1,NULL)) AS c11,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;12,1,NULL)) AS c12,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;13,1,NULL)) AS c13,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;14,1,NULL)) AS c14,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;15,1,NULL)) AS c15,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;16,1,NULL)) AS c16,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;17,1,NULL)) AS c17,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;18,1,NULL)) AS c18,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;19,1,NULL)) AS c19,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;20,1,NULL)) AS c20,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;21,1,NULL)) AS c21,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;22,1,NULL)) AS c22,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;23,1,NULL)) AS c23,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;24,1,NULL)) AS c24,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;25,1,NULL)) AS c25,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;26,1,NULL)) AS c26,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;27,1,NULL)) AS c27,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;28,1,NULL)) AS c28,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;29,1,NULL)) AS c29,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;30,1,NULL)) AS c30,SUM(IF(b5.激活情况&#61;"重激活" AND DAY(b5.当月首单日期)&#61;31,1,NULL)) AS c31 FROM (SELECT b3.用户ID,b3.销售员,b3.订单日期 AS 当月首单日期,SUM(IF(DATE(b4.订单日期)<b3.订单日期 AND b4.金额>0,b4.金额,NULL)) AS 当月首单日以前总金额,SUM(IF(DATE(b4.订单日期)<&#61;DATE_ADD(b3.订单日期,INTERVAL -30 DAY) AND b4.金额>0,b4.金额,NULL)) AS 当月首单日前30天之前金额,SUM(IF(DATE(b4.订单日期)>DATE_ADD(b3.订单日期,INTERVAL -30 DAY) AND DATE(b4.订单日期)<b3.订单日期 AND b4.金额>0,b4.金额,NULL)) AS 当月首单日前30天金额,b3.订单额 AS 当月首单日金额,CASE WHEN SUM(IF(DATE(b4.订单日期)<b3.订单日期 AND b4.金额>0,b4.金额,NULL)) IS NULL THEN "新增"WHEN SUM(IF(DATE(b4.订单日期)>DATE_ADD(b3.订单日期,INTERVAL -30 DAY) AND DATE(b4.订单日期)<b3.订单日期 AND b4.金额>0,金额,NULL)) IS NOT NULL THEN "留存"WHEN SUM(IF(DATE(b4.订单日期)<&#61;DATE_ADD(b3.订单日期,INTERVAL -30 DAY) AND b4.金额>0,金额,NULL)) IS NOT NULL AND SUM(IF(DATE(b4.订单日期)>DATE_ADD(b3.订单日期,INTERVAL -30 DAY) AND DATE(b4.订单日期)<b3.订单日期 AND b4.金额>0,金额 ,NULL)) IS NULL THEN "重激活"ELSE NULL END AS 激活情况FROM (SELECT b2.用户ID,b2.订单日期,b2.销售员 AS 销售员,b2.订单额#取出当月首单订单日期 首单销售 首单额 以这个日期往前推30天判断激活留存情况 FROM ( SELECT b1.用户ID,DATE(b1.订单日期) AS 订单日期,b1.销售员,SUM(金额) AS 订单额 #当月下单用户每天明细FROM &#96;a003_order&#96; AS b1WHERE b1.城市&#61;"北京" AND DATE_FORMAT(b1.订单日期,"%Y%m")&#61;DATE_FORMAT(DATE_ADD(CURRENT_DATE,INTERVAL - 1 DAY),"%Y%m") AND b1.订单日期<CURRENT_DATE AND b1.金额>0GROUP BY b1.用户ID,DATE(b1.订单日期)) AS b2GROUP BY b2.用户ID) AS b3LEFT JOIN &#96;a003_order&#96; AS b4 ON b4.用户ID&#61;b3.用户ID#where b3.用户ID&#61;22200GROUP BY b3.用户ID) AS b5WHERE b5.销售员 IS NOT NULLGROUP BY b5.销售员
)
AS b ON a.销售员&#61;b.销售员
LEFT JOIN (#05表销售确认额SELECT c1.销售员,SUM(c1.销售额) AS 当月销售确认额FROM &#96;a005_account&#96; AS c1WHERE c1.销售员 IS NOT NULL AND c1.城市&#61;"北京" AND DATE_FORMAT(c1.应收日,"%Y%m")&#61;DATE_FORMAT(DATE_ADD(CURRENT_DATE,INTERVAL - 1 DAY),"%Y%m") AND c1.应收日<CURRENT_DATEGROUP BY c1.销售员
)
AS c ON a.销售员&#61;c.销售员
ORDER BY a.当月订单额 DESC

3、做excel模板

将上面SQL数据导入excel中 设置好格式表头 删除数据  还是用到SUMif函数 把所有销售员当月每天的这两个指标都用公式计算出来

4、保存excel模板 文件名设置成英文名  * _style.xlsx 这样结尾最好

5、设置kettle转换 

设置好数据库连接服务器 表输入里选择数据库连接 表输出选择excel表输出 调用第4步excel模板文件* _style.xlsx 

6、执行转换检测生成的数据和预设的格式是否相同 如果相同进行第7步即可 不相同再调整excel模板

7、设置发邮件作业 收件人地址 发件人地址 用户名 密码 服务器端口等设置好

转:https://www.cnblogs.com/Mr-Cxy/p/6038933.html



推荐阅读
  • MySQL:不仅仅是数据库那么简单
    MySQL不仅是一款高效、可靠的数据库管理系统,它还具备丰富的功能和扩展性,支持多种存储引擎,适用于各种应用场景。从简单的网站开发到复杂的企业级应用,MySQL都能提供强大的数据管理和优化能力,满足不同用户的需求。其开源特性也促进了社区的活跃发展,为技术进步提供了持续动力。 ... [详细]
  • 在 Oracle 数据库中,`NULLS FIRST` 和 `NULLS LAST` 是 `ORDER BY` 子句中用于控制空值排序位置的关键字。当使用 `NULLS FIRST` 时,无论排序顺序是升序 (`ASC`) 还是降序 (`DESC`),包含空值的记录都会被排列在结果集的最前面。相反,`NULLS LAST` 则确保空值记录被放置在结果集的最后。这些关键字提供了灵活的排序选项,特别是在处理包含大量空值的数据集时,能够更好地满足不同的业务需求。 ... [详细]
  • PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解
    PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解 ... [详细]
  • 利用ViewComponents在Asp.Net Core中构建高效分页组件
    通过运用 ViewComponents 技术,在 Asp.Net Core 中实现了高效的分页组件开发。本文详细介绍了如何通过创建 `PaginationViewComponent` 类并利用 `HelloWorld.DataContext` 上下文,实现对分页参数的定义与管理,从而提升 Web 应用程序的性能和用户体验。 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 深入解析:RKHunter与AIDE在入侵检测中的应用与优势
    本文深入探讨了RKHunter与AIDE在入侵检测领域的应用及其独特优势。通过对比分析,详细阐述了这两种工具在系统完整性验证、恶意软件检测及日志文件监控等方面的技术特点和实际效果,为安全管理人员提供了有效的防护策略建议。 ... [详细]
  • 在处理历史交易表时,发现存在部分重复交易记录,需进行数据清理。为解决此问题,考虑构建一个临时表,并采用SQL Server ODBC工具进行数据的导入与导出操作,以实现高效去重。此外,建议结合索引优化和批处理技术,进一步提升数据处理效率和系统性能。 ... [详细]
  • DHCP三层交换机设置方式全局模式和接口模式设置方式和命令resetsave回车输入yreboot输入n输入y重启后就恢复默认设置了默认用户名密码adminAdmin@huawei ... [详细]
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 深入解析十大经典排序算法:动画演示、原理分析与代码实现
    本文深入探讨了十种经典的排序算法,不仅通过动画直观展示了每种算法的运行过程,还详细解析了其背后的原理与机制,并提供了相应的代码实现,帮助读者全面理解和掌握这些算法的核心要点。 ... [详细]
  • 在斯坦福大学的公开课中,详细探讨了多变量线性回归在机器学习中的应用与解析。课程内容涵盖了多维特征的处理方法,以及如何通过多变量梯度下降算法优化模型参数,为理解和实现复杂的回归问题提供了坚实的理论基础和实践指导。 ... [详细]
  • 题目旨在解决树上的路径最优化问题,具体为在给定的树中寻找一条长度介于L到R之间的路径,使该路径上的边权平均值最大化。通过点分治策略,可以有效地处理此类问题。若无长度限制,可采用01分数规划模型,将所有边权减去一个常数m,从而简化计算过程。此外,利用单调队列优化动态规划过程,进一步提高算法效率。 ... [详细]
  • 【Python爬虫实操】 不创作小说,专精网站内容迁移,超高效!(含源代码)
    本文详细介绍了如何利用Python爬虫技术实现高效网站内容迁移,涵盖前端、后端及Android相关知识点。通过具体实例和源代码,展示了如何精准抓取并迁移网站内容,适合对Python爬虫实战感兴趣的开发者参考。 ... [详细]
author-avatar
我是小章丘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有