[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);

效果如下:

相关推荐
李慕婉学姐1 分钟前
【开题答辩过程】以《基于Hadoop架构的体育类短视频推荐系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
大数据·hadoop·架构
铭毅天下4 分钟前
Elasticsearch 9.X 官方文档大变样了!
大数据·elasticsearch·搜索引擎·全文检索
leijmdas5 分钟前
git操作命令
大数据·git·elasticsearch
TDengine (老段)10 分钟前
TDengine 地理信息使用说明
大数据·时序数据库·tdengine
太阳伞下的阿呆11 分钟前
kafka高吞吐持久化方案(1)
分布式·mysql·kafka·db·高吞吐
小马爱打代码12 分钟前
Spring AI:Docker 安装向量数据库 - Redis Stack
数据库·人工智能·spring
Light6013 分钟前
Spark OA 系统深度分析与改造报告(整合版 + 领码 SPARK 改造计划 + 功能缺口)
大数据·分布式·spark
RioLopez18 分钟前
大数据HADOOP之部署HADOOP平台
大数据·hadoop·eclipse
青云交18 分钟前
Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的对话系统多轮交互优化与用户体验提升
java·大数据·机器学习·自然语言处理·对话系统·多轮交互
90后小陈老师19 分钟前
记录一次Figma订阅被多扣费的教训
java·linux·数据库