滴滴SQL面试题 取出累计值与1000差值最小的记录
今天的题目来自滴滴出行
已知有表cost_detail包含id和money两列,id为自增,请累加计算money值,并求出累加值与1000差值最小的记录。
+-----+--------+
| id | money |
+-----+--------+
| 1 | 200 |
| 2 | 300 |
| 3 | 200 |
| 4 | 100 |
| 5 | 150 |
| 6 | 80 |
| 7 | 100 |
| 8 | 200 |
+-----+--------+
分析
这道题目首先是计算累加值,然后计算累加值与1000的差值,然后找打差值最小的记录,这里的差值肯定是绝对值了,整体来说题目很简单
代码实现
计算累加值
直接使用累加窗口函数累加即可
select
*,sum(money) over(order by id) as sum_money
from
cost_detail
+---+-----+-------