急!!创建一个sql作业,实现每天数据分配问题!
A表:
Aid type cname sname datetime
B表:
Bid sname rank
C表(统计表):
Cid sname type1,type2,type3,type4
假设:
A表当天新增了1000笔客户数据,其中A.type = 1的100笔,A.type =2的310笔,A.type =3的500笔,A.type =4的90笔
B表里面当天b.rank=1的有20人,b.rank=0的有10人,共30人
B表sname是来自于A表sname的
希望创建一个sql的作业,每天0点自动运行sql语句,实现:
模式一(最佳)、
1、把当天A表的1000笔客户数据分配出去,B表里面b.ran=1的有20人参与客户分配,平均每个人可以分到1000/20=50个,b.rank=0的人不参与分配
2、A.type = 1的数据平均分配给b.rank=1的20人,同理,其它的值也是,如果A.type =2的310笔不够20人平均分配,例如Bid = 11的客户只分到15笔(Bid = 10的客户分到了16笔),则A.type =3的第一笔数据从Bid = 11的客户开始分配
3、分配的方式为把b.sname的值写入a.sname
4、每个b.sname分配到的客户写入C表来作为统计日志
举例如下:
b.sname="john"的当天共分配到了100/20笔=50笔数据(也就是A表1000笔数据里面有50笔的A.sname="john")
其中:数据分配到了A.type = 1的5笔(100/20=5),A.type = 2的9笔(310/20≈16),A.type = 3的24笔((500-10)/20≈24),A.type = 4的5笔((90+10)/20=5)共50笔
将sname="john"的type值对应的1,2,3,4写入C表对应的type1,type2,type3,type4
模式二(欠佳,不够均匀)
1、把当天A表的1000笔客户数据分配出去,B表里面b.ran=1的有20人参与客户分配,平均每个人可以分到1000/20=50个,b.rank=0的人不参与分配
2、1000笔数据不分type随机分配给B表里面b.ran=1的20人
3、分配的方式为把b.sname的值写入a.sname
4、每个b.sname分配到的客户写入C表来作为统计日志
以上两种模式,给出语句马上给分,给出一种的也给一半分,谢谢!