Bootstrap

SQL面试题——滴滴SQL面试题 取出累计值与1000差值最小的记录

滴滴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
+---+-----+-------

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;