R语言和集算器:找出每个月的销售额均在前3名的销售员

本文对比了R语言和集算器在找出每个月销售额均在前3名的销售员问题上的解决方案。通过数据库访问、时间函数、分步运算和结果处理等方面进行探讨,发现R语言依赖于丰富的基础函数和第三方库,而集算器在数据成员访问和分组处理上更直观高效。
摘要由CSDN通过智能技术生成

R语言和集算器都具备优秀的分步运算能力,但在细节上有所不同,下面通过一个例子进行对比:

某公司的销售部门希望统计出优秀的销售员,即今年从1月份到上个月为止,每个月的销售额均是前3名的销售员。数据主要来自MSSQL数据库的订单表:salesOrder,主要字段包括订单编号:orderID,销售员姓名:name,销售额:sales,订单时间:salesDate。

解法大概是这样的:

1.      计算出年初和本月初的日期,按时间过滤出数据

2.      按月份和销售员分组,计算每个月每个销售员的销售额。

3.      按月份分组。计算分组内的销售额的排名。

4.      过滤每个分组内的前3名。

5.      求各分组的交集,即每个月都是前3名的销售员。

 

R的解法如下:

01   library(RODBC)

02   odbcDataSources()

03   conn<-odbcConnect("sqlsvr")

04   originalData<-sqlQuery(conn,'select *from salesOrder')

05   odbcClose(conn)

06  starTime<-as.POSIXlt(paste(format(Sys.Date(),'%Y'),'-01-01',sep=''))

07  endTime<-as.POSIXlt(paste(format(Sys.Date(),'%Y'),format(Sys.Date(),'%m'),'01'

以下是C语言的代码实现: ```c #include <stdio.h> #define NUM_PRODUCTS 5 // 产品数量 #define PRICES {100, 50, 35, 150, 200} // 产品价格数组 int main() { int n; // 销售人员数量 printf("请输入销售人员数量:"); scanf("%d", &n); int sales[n][NUM_PRODUCTS]; // 二维数组保存每个销售人员的销售情况 int totals[n] = {0}; // 保存每个销售人员的总销售额 int max_salesman = 0; // 保存销售冠军的下标 int max_total = 0; // 保存总销售额最大值 // 输入每个销售人员的销售情况 for (int i = 0; i < n; i++) { printf("请输入销售员%d的销售情况(按顺序输入每个产品销售的数量):", i+1); for (int j = 0; j < NUM_PRODUCTS; j++) { scanf("%d", &sales[i][j]); totals[i] += sales[i][j] * PRICES[j]; // 计算每个销售员的总销售额 } if (totals[i] > max_total) { // 更新销售冠军 max_salesman = i; max_total = totals[i]; } } // 输出每个销售员的总销售额和收入 printf("\n每个销售员的总销售额和收入如下:\n"); for (int i = 0; i < n; i++) { printf("销售员%d的总销售额:%d,收入:%d\n", i+1, totals[i], totals[i]/10); } // 输出销售冠军 printf("\n销售冠军是销售员%d,总销售额为%d。\n", max_salesman+1, max_total); return 0; } ``` 上述代码中,我们通过一个二维数组 `sales` 来保存每个销售人员的销售情况,其中第一维表示销售人员的下标,第二维表示产品的下标。数组 `totals` 则保存每个销售人员的总销售额。在输入每个销售人员的销售情况时,我们同时计算该销售员的总销售额,并且在更新销售冠军时也一并更新了最大值。最后,我们输出每个销售员的总销售额和收入,以及销售冠军的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值