[SQL智慧航行者] - 平面上最近距离

话不多说, 先看数据表信息.

数据表信息:

point_2d 表, 包含一个平面内一些点 (超过两个) 的坐标值 (x, y) .

复制代码
|x   | y  |
|----|----|
| -1 | -1 |
|  0 |  0 |
| -1 | -2 |

话不多说, 再看需求~

需求:

写一条查询语句求出这些点中的最短距离并保留2位小数。上述数据应该输出如下结果:

复制代码
+--------+
|shortest|
+--------+
|1.00    |
+--------+

结果解释:

最短距离是1,从点(-1,-1)到点(-1,-2)。

话不多说, 进行拆解~

拆解:

sql 复制代码
select 
round(sqrt(min(pow((p1.x - p2.x), 2) + pow((p1.y - p2.y), 2))), 2) as shortest
from point_2d p1, point_2d p2
where (p1.x, p1.y) <> (p2.x, p2.y)
;

效果如下:

该查询语句使用了min函数求出最小距离,pow函数计算平方,sqrt函数计算平方根,并使用round函数将结果保留2位小数。通过使用两个表别名p1和p2,可以将每个点与其他所有点进行比较,以找到最短距离。同时,使用where子句来排除点与自身的比较。结果将显示在名为shortest的列中。

最后给大家介绍一下我这边的创建数据表和插入数据的操作步骤, 想要自己测试的话, 可以参考:

sql 复制代码
CREATE TABLE point_2d (
    x INT,
    y INT
);

INSERT INTO point_2d (x, y)
VALUES (-1, -1),
       (0, 0),
       (-1, -2);

效果如下:

相关推荐
2601_95536315几秒前
B端企业拓客:如何在精准度与成本之间找到真正平衡?氪迹科技法人股东号码核验系统,阶梯式价格
大数据·人工智能
小荟荟几秒前
数据资产估值技术探秘:荟宸多源异构数据融合引擎介绍
大数据
-ONLY-¥2 分钟前
MySQL备份恢复全攻略
数据库·oracle
chatexcel7 分钟前
ChatExcel AIPPT新功能:自定义模板上传,动画完整导出,单页可编辑
大数据·人工智能
一个天蝎座 白勺 程序猿12 分钟前
源网荷储实时互动需求下,时序数据库如何赋能新型电力系统?
数据库·时序数据库
Ujimatsu13 分钟前
数据分析相关面试题
sql·数据分析
笑梦无境16 分钟前
mysql基础篇二(多年前整理)
数据库·mysql
cqsztech17 分钟前
基于ORACLE LINUX 10.1 MYSQL 8.4 源码安装
linux·mysql·oracle
乐之者v17 分钟前
mysql 的查询条件放在 join on 和 Where 的区别:
mysql
Hello.Reader19 分钟前
Pandas API on Spark 配置选项系统、默认索引与性能调优
大数据·spark·pandas