促销期间销售额最高的销售员

这是一个百货公司的数据库问题。数据库中有两个表,一个是商店促销时间的日历,促销记录表Promotion

..

一个是全年的销售员销售额表,销售记录表SalesRecord

..

现在需要知道的是每次促销活动中哪位销售员的销售额最高,这样可以给那个职工发绩效奖金。

循环促销日历表,每次循环中,先从销售记录表中选出本次促销的所有销售记录,然后对其按销售员分组并求总销售额,就可以找到销售额最大的销售员,将其名字记录在新序表内,就是答案了。


A B
1 =T("Promotion.txt") =T("SalesRecord.txt")
2 =create(promo_name,best_sale)
3 for A1 =B1.select(between(sale_date, A3.start_date:A3.end_date))
4
=B3.groups(clerk_name; sum(sale_amt):total_amt)
5
=B4.maxp@a(total_amt)
6
>A2.insert(0,A3.promo_name,B5.(clerk_name).concat@c())

https://try.esproc.com/splx?3by

A1获得每次促销活动的信息,B1销售记录表。

A2建立结果序表,准备记录每次促销活动的名称及销售额最高的销售员。

A3循环每次销售活动。

在循环体中,B3找到时间位于促销期间的销售数据。B4将这些销售数据按销售员分组汇总,计算每人的销售额。B5选出其中销售额最大的销售员,考虑到有可能出现多位销售员销售额相同的情况,加了@a选项。B6在结果序表中增加本次促销活动的结果,包括促销活动名称和最佳销售员。

循环结束后,在A2中可以得到最终结果:

..

熟练之后,A2之后的代码可以写为

=A1.new(promo_name, B1.select(between(sale_date, start_date:end_date)).groups(clerk_name; sum(sale_amt): total_amt).maxp@a(total_amt).(clerk_name).concat@c():best_sale),用循环函数代替后面的循环体,得到的结果是相同的。