SQL面试题挑战03:奖金瓜分问题(拼多多)

目录

问题:

在活动大促中,有玩游戏瓜分奖金环节。现有奖金池为10000元,代表奖金池中的初始额度。用户的分数信息如下:

powershell 复制代码
user_id  score
100       60
101       45
102       40
103       35
104       30
105       25
106       15
107       10
108       5

表中的数据代表每一个用户和其对应的得分,user_id和score都不会有重复值。瓜分奖金的规则如下:按照score从高到低依次瓜分,每个人都能分走当前奖金池里面剩余奖金的一半,当奖金池里面剩余的奖金少于250时(不含),则停止瓜分奖金。

现在需要查询出所有分到奖金的user_id和其对应的奖金。

SQL解答:

这是拼多多的一个面试题,需要先进行一点数学层面的分析,把整个瓜分逻辑捋清楚之后不难。这里给出一种思考逻辑:假设奖金池的初始总奖金为n,那么第一名分到的奖金为n/2,第二名分到奖金n/4,第三名分到的奖金为n/8,依次类推第x名分到的奖金为n/2^x,然后计算即可。

sql 复制代码
select
user_id
,score
,power(0.5,rn)*10000 as prize
from
(  select
    user_id
    ,score
    ,row_number() over(order by score desc) as rn
    from temp 
) tt 
where power(0.5,rn)*10000 >=250
相关推荐
q***81644 小时前
MySQL:数据查询-limit
数据库·mysql
p***92484 小时前
DBeaver连接本地MySQL、创建数据库表的基础操作
数据库·mysql
JIngJaneIL5 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·社区互助
晚风吹人醒.6 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
Y***98516 小时前
DVWA靶场通关——SQL Injection篇
数据库·sql
Yawesh_best6 小时前
告别系统壁垒!WSL+cpolar 让跨平台开发效率翻倍
运维·服务器·数据库·笔记·web安全
蒋士峰DBA修行之路6 小时前
实验二十八 SQL PATCH调优
数据库·sql·gaussdb
I***t7166 小时前
一条sql 在MySQL中是如何执行的
数据库·sql·mysql
一 乐7 小时前
应急知识学习|基于springboot+vue的应急知识学习系统(源码+数据库+文档)
数据库·vue.js·spring boot
微学AI8 小时前
内网穿透的应用-突破局域网束缚,MongoDB 远程访问使用cpolar原来可以这么简单
数据库·mongodb