- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用
目录
一,原题力扣链接
二,题干
Point2D
表:+-------------+------+ | Column Name | Type | +-------------+------+ | x | int | | y | int | +-------------+------+ (x, y) 是该表的主键列(具有唯一值的列的组合)。 这张表的每一行表示 X-Y 平面上一个点的位置
p1(x1, y1)
和p2(x2, y2)
这两点之间的距离是sqrt((x2 - x1)2 + (y2 - y1)2)
。编写解决方案,报告
Point2D
表中任意两点之间的最短距离。保留 2 位小数 。返回结果格式如下例所示。
示例 1:
输入: Point2D table: +----+----+ | x | y | +----+----+ | -1 | -1 | | 0 | 0 | | -1 | -2 | +----+----+ 输出: +----------+ | shortest | +----------+ | 1.00 | +----------+ 解释:最短距离是 1.00 ,从点 (-1, -1) 到点 (-1, 2) 。
三,建表语句
Create Table If Not Exists Point2D (x int not null, y int not null);
Truncate table Point2D;
insert into Point2D (x, y) values ('-1', '-1');
insert into Point2D (x, y) values ('0', '0');
insert into Point2D (x, y) values ('-1', '-2');
select * from Point2D;
四,分析
题解:
表:2d表
字段:x轴左表,y轴左表
求两点之间最短的距离
分析:
第一步 内连接两个表
第二步,按照公式计算 指数和幂数等等
第三步, 取最小值
五,SQL解答
with t1 as (
select
# p1.x,p1.y,p2.x as x1,p2.y as y1,
round(min(sqrt(power(p2.x-p1.x,2)+power(p2.y-p1.y,2))),2) as shortest
from point2d p1 join point2d p2
on (p1.x, p1.y) <> (p2.x,p2.y) #这个秒啊秒啊 直接2列不等于其他两列
)
select * from t1;
六,验证
七,知识点总结
- 连接条件可以多列 一起不等于 多列
- 指数函数的运用
- 幂数函数的运用
- 平面上两点距离最短的点 的进一步掌握 解释可以用这个公式运用到项目中
- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用