急!!创建一个sql作业,实现每天数据分配问题!

cyancrystal 2013-12-16 08:41:20
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表来作为统计日志


以上两种模式,给出语句马上给分,给出一种的也给一半分,谢谢!
...全文
259 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2014-03-12
  • 打赏
  • 举报
回复
难点在于需确保分配结果的2个均匀,力气活.
LongRui888 2014-01-03
  • 打赏
  • 举报
回复
这种随机分配的,最好还是在程序中来解决把,用sql语句,不仅麻烦,而且速度也快不了
cyancrystal 2013-12-30
  • 打赏
  • 举报
回复
自己顶一下,等答案啊!
cyancrystal 2013-12-22
  • 打赏
  • 举报
回复
今天在线等!
cyancrystal 2013-12-22
  • 打赏
  • 举报
回复
触发器怎么记录上次分给谁的?下次应该分给谁?A.type = 1的数据有多少?
KeepSayingNo 2013-12-17
  • 打赏
  • 举报
回复
你这个业务肯定用触发器比较好啊,在A表上建立触发器,当A表有插入数据时,同时要B表和C表写。用作业,实时性不高啊。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧