- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用
目录
一,原题力扣链接
二,题干
表:
Point
+-------------+------+ | Column Name | Type | +-------------+------+ | x | int | +-------------+------+ 在SQL中,x是该表的主键列。 该表的每一行表示X轴上一个点的位置。找到
Point
表中任意两点之间的最短距离。返回结果格式如下例所示。
示例 1:
输入: Point 表: +----+ | x | +----+ | -1 | | 0 | | 2 | +----+ 输出: +----------+ | shortest | +----------+ | 1 | +----------+ 解释:点 -1 和 0 之间的最短距离为 |(-1) - 0| = 1。进阶:如果
Point
表按 升序排列,如何优化你的解决方案?
三,建表语句
drop table Point;
Create Table If Not Exists Point (x int not null);
Truncate table Point;
insert into Point (x) values ('18401');
insert into Point (x) values ('1012');
insert into Point (x) values ('9839');
insert into Point (x) values ('6231');
insert into Point (x) values ('1644');
insert into Point (x) values ('9483');
insert into Point (x) values ('2576');
insert into Point (x) values ('4390');
insert into Point (x) values ('14207');
insert into Point (x) values ('18064');
四,分析
先给其排序一下
然后开窗lag函数 求两个值之间的差值
用x-x1 然后min一下 取最小值
五,SQL解答
with t1 as (
select x,lag(x) over () x1
from Point order by x
),t2 as (
select min(x-x1) from t1
)
select * from t2;
六,验证
七,知识点总结
- 窗口函数 lag的运用
- 求直线之间的最小值,先给数列排序一下 然后用后一行-前一行 最后去最小值即可
- min函数的运用
- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用