文章目录
- 1. 613.直线上的最近距离
- 1.1 题意
- 1.2 准备数据
- 1.3 题解
- 1.4 结果截图
1. 613.直线上的最近距离
1.1 题意
表: Point
±------------±-----+
| Column Name | Type |
±------------±-----+
| x | int |
±------------±-----+
在SQL中,x是该表的主键列。
该表的每一行表示X轴上一个点的位置。
找到 Point 表中任意两点之间的最短距离。
返回结果格式如下例所示。
示例 1:
输入:
Point 表:
±—+
| x |
±—+
| -1 |
| 0 |
| 2 |
±—+
输出:
±---------+
| shortest |
±---------+
| 1 |
±---------+
解释:点 -1 和 0 之间的最短距离为 |(-1) - 0| = 1。
1.2 准备数据
Create Table If Not Exists Point (x int not null)
Truncate table Point
insert into Point (x) values ('-1')
insert into Point (x) values ('0')
insert into Point (x) values ('2')
1.3 题解
with t1 as (
select ABS(p2.x - p1.x) abs from Point p1,Point p2
)
,t2 as (
select abs,row_number() over (order by abs) as rn from t1 where abs != 0
)
select abs as shortest from t2 where rn=1