讲解SQLServer典例实现过程3节能
民生杂谈 2020-11-12 10:46 字号: 大 中 小
业务需求是每周一和周四结算奖金,不难发现奇数次结算依次相差7天,偶数次结算依次相差7天,相邻奇数次和偶数此结算相差3天,可以使用求余的方式来统一这个问题。如果当前天数(days)与7求余结果为0或者当前天数(days)减去3之后求余的结果为0,则当前天数是结算的日期。具体的实现的算法是: 1、提取当前的天数到一个变量中declare @days int set @days=(select days from misc)。 2、判断是否满足结算条件if @days%7=0 or (@days-3)%7=0 begin…end。 类似于这样简单的算法可以直接的应用到数据库中而不会发生问题。 复杂的业务规则需要复杂的算法,复杂的规则对于一个有具体数字的变量来说,实现起来已经比较复杂,如果应用到数据库中存储的杂乱无章的一大批数字,并且实现批量的计算,则需要对算法进行大幅度的调整。 比如业务规则需要在员工每4000元的奖金中扣除400元作为重复消费,并且在扣除最后的400元,重复消费一次奖励一件产品,需要在数据库中使用一个表(award_repeat)记录产生的重复消费。如果一次扣除的奖金不足400元,在下次结算的时候接着扣除,直到扣除的奖金够400元,然后奖励一件产品,进入下次的循环,比如现在奖金总数达到了3600元,则不会扣除,如果达到了3700元,则要扣除100元,如果达到了7700元,则要扣除410元,并且产生一个重复消费。 为了实现这个规则,在员工表(member)中记录每个员工奖金的总数([total_award]),同时记录重复消费的次数([repeat_num]),在另外的过渡表(award_day)中记录每次的奖金和每次扣除重复消费的奖金,最后在奖金表(award)中综合当次奖金和当次结算需要扣除的重复消费就得到了当次结算实际发放的奖金。采用批量的计算方法,实现的算法是:在计算奖金之后,扣除重复消费之前把当前奖金累加到员工的([total_并为姚文元出谋划策说: 毛主席逝世后award])字段([total_award]),记录没有扣除重复消费的所有的奖金总和。实现重复消费计算的的算法是,设定条件(F1)为在member表中存在奖金总数大于等于重复消费次数加1后乘以4000,如果有满足条件F1的记录,则选择满足条件的纪录中主键和当前的日期(days)插入到重复消费表(award_repeat)中,然后更新member表中满足条件F1的repeat_num使其增加1,重复检查条件F1,直到member表中没有满足条件F1纪录。 结论:在数据库中研究和实掌管人DJWaldow和NickWestergaard会就你昨天是怎样完成事情的对嘉宾进行采访现算法有着相当大的困难,同时也是一种挑战。随着现实世界中业务规则的日益复杂,相应的数据库应用软件实现业务规则需要的算法也日益复杂,把复杂的算法应用在数据库中需要找到一个统一的方式,在熟悉业务规则的前提下,根据数据库的特点和相应的执行命令的能力,找到一种适合数据库批量计算的步骤是解决问题的关键。
贵阳治疗白癜风较好医院陇南专业治疗白癜风的医院两个月的宝宝胀气怎么办-
-
恩惠名宿利物浦最强天王能终结梅西C罗金球统治
名宿:利物浦最强天王能终结梅西C罗金球统治萨拉赫能达到什...
2020-09-12 | 民生杂谈
-
-
博斯科维奇重击全场压制日本塞尔维亚30日搭配
博斯科维奇重击全场压制日本 塞尔维亚日本取国家联赛开门红...
2020-06-07 | 民生杂谈
-
-
金软景不愿与朱婷比较想成为像郎平那样的教搭配
金软景不愿与朱婷比较:想成为像郎平那样的教练与金软景合...
2020-06-06 | 民生杂谈
-
-
海口市住房公积金余额超达1056亿元搭配
海口市住房公积金余额超达10.56亿元2007年以来,海南省海口市...
2020-05-29 | 民生杂谈
-
-
考辛斯复出没有时间限制但科尔不会为他改变搭配
考辛斯复出没有时间限制 但科尔不会为他改变考神今日复出!...
2020-05-27 | 民生杂谈
-
-
港南区交通局路政部门积极开展路政宣传月活
港南区交通局路政部门 积极开展“路政宣传月”活动今年五月...
2019-12-17 | 民生杂谈