#设置工作路径 D:\资料\天富盈\天富盈\erp\erp录入
setwd("D:\\资料\\程序文档")#设置文件名
path="C:\\Users\\Jarvis\\Desktop\\12月平台品类数据.xlsx"sql_yuju<-"SELECT * FROM edb_orderWHERE SUBSTRING(`订货日期`,1,10) >= '2019-12-01'AND SUBSTRING(`订货日期`,1,10) <= '2019-12-31'"#导入包
library(openxlsx)
library(dplyr)
library(sqldf)
#library(RMySQL)#链接数据库
con<-RMySQL::dbConnect(RMySQL::MySQL(),host='127.0.0.1',port=3306,dbname="team fortune",user="root",password="123456")
#查看数据库里所有的表
dbListTables(con)
#设置编码  GBK
dbSendQuery(con,'SET NAMES GBK')
#查询数据
E<-dbGetQuery(con,sql_yuju)str(E)
#E店宝数据
#E<-read.csv('12月.csv',header=TRUE,sep=',',colClasses="character")#店铺名称对照表连入D:\资料\天富盈\天富盈
duizhao<-read.xlsx('D:\\资料\\天富盈\\天富盈\\对照表.xlsx',1)E<-left_join(E,duizhao,by="产品名称")
names(E)
unique(E$店铺名称)#按店铺筛选
TM_E<-E[which(E$店铺名称=="【天】chocky旗舰店"),]
TB_E<-E[which(E$店铺名称=="【淘】泰好吃食趣"),]
JD_POP_E<-E[which(E$店铺名称=="【京】比斯奇果屋巧客旗舰店"),]
JD_ZHUAN_E<-E[which(E$店铺名称=="【京】天富盈食品专营店"),]
PDD_E<-E[which(E$店铺名称=="【拼】比斯奇果屋巧客食品旗舰店"),]
WPH_E<-E[which(E$店铺名称=="【唯】唯品会"),]
YZ_E<-E[which(E$店铺名称=="【赞】泰国比斯奇果屋巧客"),]
XHY_E<-E[which(E$店铺名称=="【黑】小黑鱼APP"),]
XCX_E<-E[which(E$店铺名称=="小程序"),]
HSQ_E<-E[which(E$店铺名称=="好食期"),]
shopname<-c(substitute(TM_E),substitute(TB_E),substitute(JD_POP_E),substitute(JD_ZHUAN_E),substitute(PDD_E),substitute(WPH_E),substitute(YZ_E),substitute(XHY_E),substitute(XCX_E),substitute(HSQ_E))#销售量汇总
##分类汇总
toushi<-function(tablename){#做数据透视表,构建sql语句sql<-paste('select "产品名称",sum(订货数量),sum("实付金额"),"修改后名称" from ',tablename,' group by "产品名称"',sep=" ")shops<-sqldf(sql)names(shops)<-c("产品名称","订货数量","实付金额","修改后名称")return(shops)
}##数据处理   将分类名中有X的乘入  +号分开
clean<-function(tablname){#提取修改名后有X的名称doubles<-grep(pattern = "X",x = tablname$修改后名称,value = F)#提取乘以倍数LastBate<-as.integer(substr(tablname[doubles,]$修改后名称,nchar(tablname[doubles,]$修改后名称),nchar(shop[doubles,]$修改后名称)))#将订货数量乘以倍数,去掉修改名称后面的乘项tablname[doubles,]$订货数量 <- tablname[doubles,]$订货数量 *  LastBate tablname[doubles,]$修改后名称<-substr(tablname[doubles,]$修改后名称,1,nchar(tablname[doubles,]$修改后名称)-2)#提取修改名中有 + 的名称adds<-grep(pattern = "\\+",x = tablname$修改后名称,value = F)if (length(adds)!=0) {#将有+的数据剔除,复制到新表tichu<-tablname[adds,]tablname<-tablname[-adds,]#将修改名中有 + 的名称用+切割为listxx<-strsplit(tichu$修改后名称,split = "\\+")#将有+的数据循环写回原来的表for (j in c(1:length(adds))) {print("开始处理这个表")pro<-cbind(tichu$产品名称[j],tichu$订货数量[j],tichu$实付金额[j]/length(xx[[j]]),xx[[j]])#print(pro)colnames(pro)<-colnames(tablname)tablname<-rbind(tablname,pro)}}else {print("这个表无需处理")} return(tablname)
}#循环查询
mydata<-list()
for (i in shopname) {shop<-toushi(i)shop<-clean(shop)#再进行一次透视处理sql<-paste('select "修改后名称",sum(订货数量),sum("实付金额") from ',substitute(shop),' group by "修改后名称"',sep=" ")shops<-sqldf(sql)names(shops)<-c("产品名称","订货数量","销售额")shops<-arrange(shops, desc(shops$订货数量))mydata[[i]]<-shops
}# 总体数据
shuju<-matrix(NA,0,3)
colnames(shuju)<-names(mydata[[1]])
shuju<-as.data.frame(shuju)
for (j in mydata){shuju<-rbind(shuju,j)
}
shuju<-sqldf('select "产品名称",sum(订货数量) "订货数量",sum("销售额") "销售额" from shuju group by "产品名称" order by 订货数量 DESC')#写出list
names(mydata)<-c("天猫", "淘宝","京东旗舰店" ,"京东专营店","拼多多","唯品会" ,"有赞" ,"小黑鱼","小程序","好食期")
shuju<-list(shuju)
#写出
write.xlsx(c("总体"=shuju,mydata), path)

统计出库数,sql查询数据,sqldf做透视表,循坏处理数据相关推荐

  1. 主要是sql查询符合在圆形,多边形区域经纬度的数据

    主要是sql查询符合在圆形,多边形区域经纬度的数据 查询 圆形 中心点 + 距离 drop table if exists demo; CREATE TABLE `demo` (`id` int(5) ...

  2. NO.111 禅道导出数据做透视表,让你轻松做年终工作总结。

    为什么80%的码农都做不了架构师?>>>    年底了,很多公司都要求大家写年终工作总结.估计很多童鞋就开始犯愁了.年年写,来来去去总是那些模式,自己都觉得没意思. 今天,教大家一招 ...

  3. Excel的数据透视表怎么弄 ?数据透视表怎么做汇总求和

    使用Excel进行求和,除了运用函数之外,还可以插入数据透视表进行求和,数据透视表怎么做呢?小编使用WPS里的Excel给大家演示一遍. 步骤一:打开需要求和的表格,点击最上方的工具栏里的" ...

  4. web常用通用组件+Axure后台管理系统框架模板+大屏数据可视化元件库+智慧社区管理系统大屏+图表组件+表单组合+智慧数据看板+通用大屏图表原件库+电脑端常用组件

    作品介绍:web常用通用组件+Axure后台管理系统框架模板+大屏数据可视化元件库+智慧社区管理系统大屏+图表组件+表单组合+智慧数据看板+通用大屏图表原件库+电脑端常用组件 Axure原型演示及下载 ...

  5. 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

    题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小的那个. Id Email 1 john@example.com 2 bob@example.c ...

  6. 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

    题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个. +----+------------------+ | Id | Email | + ...

  7. Sql Server 数据库,只复制表结构不复制表数据如何操作?

    Sql Server 数据库,只复制表结构不复制表数据如何操作? 1.选中要复制的数据库 2.右键 3.任务 4.生成脚本 5.弹出生成数据库对象的脚本窗口,点下一步 6.选择要编写脚本的数据库对象, ...

  8. 从大数据量分库分表 MySQL 合并迁移数据到 TiDB

    如果分表数据总规模特别大(例如大于 1 TiB),并且允许 TiDB 集群在迁移期间无其他业务写入,那么你可以使用 TiDB Lightning 对分表数据进行快速合并导入,然后根据业务需要选择是否使 ...

  9. excel透视表计数去重_Excel数据透视表中的唯一计数

    excel透视表计数去重 In a previous article,  Roger Govier showed us a couple of different ways to get a Uniq ...

最新文章

  1. D~信息学/计算机专业操作
  2. 给GAN一句描述,它就能按要求画画,微软CVPR新研究 | 附PyTorch代码
  3. RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)
  4. 2021年全新各方向IT职业技能图谱
  5. 符缓冲流复制Java文件
  6. 设计模式:状态模式(State)
  7. 阿里巴巴加入 Linux 基金会
  8. mysql字段是否存在_mysql判断列是否存在
  9. 机房线路故障,引发多家公司不能上网,和自己de经历有感
  10. 域渗透——Local Administrator Password Solution
  11. 《htmlxhtml权威指南》部分标签语义学习
  12. java after 函数_函数周期表丨信息丨值丨ISONORAFTER
  13. 最大文件打开数的正确修改姿势
  14. 状态机finite-state machine学习笔记1
  15. 车牌定位html5,车牌识别(一)——车牌定位(附详细代码及注释)
  16. 适合财务人员的财务报表分析软件有哪些?
  17. SQL server 2005下载地址
  18. 几何分布的期望和方差公式推导_机器学习常用的方差、协方差与皮尔逊值
  19. 二次开发Spark实现JDBC读取远程租户集群Hive数据并落地到本集群Hive的Hive2Hive数据集成【Java】
  20. Ubuntu16.04 桌面 launcher 丢失

热门文章

  1. 【Hack The Box】windows练习-- Silo
  2. eclipse安装html编辑器插件
  3. html5工业相机,AVT工业相机
  4. 拒绝验证因为有你,我不孤单
  5. c语言校友通讯录毕业论文,校友录毕业论文(C_+sql2005).doc
  6. python服务器环境搭建_服务器python环境搭建
  7. 工业物联网的价值有哪些
  8. 本地文件搜索引擎项目说明
  9. 阿里云学生成长计划资格考试分享
  10. xdoj-87-跳一跳