SQL面试题——奖金瓜分问题
奖金瓜分问题
在活动大促中,有玩游戏瓜分奖金环节。现有奖金池为 10000元,代表奖金池中的初始额度。用户的分数信息如下表。表中的数据代表每一个用户和其对应的得分,user_id 不会有重复值。瓜分奖金的规则如下:按照 score 从高到低依次瓜分,每个人都能分走当前奖金池里面剩余奖金的一半,当奖金池里面剩余的奖金少于 250 时(不含),则停止瓜分奖金。 现在需要查询出所有分到奖金的 user_id 和其对应的奖金。
+-------+-----+
|user_id|score|
+-------+-----+
| 100| 60|
| 101| 45|
| 102| 45|
| 103| 35|
| 104| 30|
| 105| 25|
| 106| 15|
| 107| 10|
+-------+-----+
分析
该题目相对简单,给用户根据score进行排名,然后依次给出金额即可。难点是如何计算瓜分金额、如何计算奖池余额。
我们看到每次都是之前的1/2,其实很明显是一个等比数列,或者我们可以这么理解每个用户都有一个获取奖金的除数,第一个人的除数是2,第二个人的除数是4,以此类推,由于被除数是不