LeetCode:Database 31.平面上的最近距离

Posted Xiao Miao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:Database 31.平面上的最近距离相关的知识,希望对你有一定的参考价值。

要求:写一个查询语句找到两点之间的最近距离,保留 2 位小数。

point_2d表:

| x  | y  |
|----|----|
| -1 | -1 |
| 0  | 0  |
| -1 | -2 |
表 point_2d 保存了所有点(多于 2 个点)的坐标 (x,y) ,这些点在平面上两两不重合。

Result Table:

| shortest |
|----------|
| 1.00     |

分析:
1.两点之间距离等于根号下((x1-x2)(x1-x2)+(y1-y2)(y1-y2)),这里使用sqrt()函数求平方根
2.为了求最短距离,首先需要求出两点之间距离,使用两张表自连接,取两张表中不同的点做求距离运算,通过order by进行升序排序,limit取第一个值就是最短距离,使用round()保留两位

SQL语句:

#1.方法1
SELECT ROUND(d,2) AS shortest FROM( 
SELECT SQRT((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))AS d
FROM point_2d a,point_2d b
WHERE a.x!=b.x OR a.y!=b.y)c
ORDER BY shortest ASC
LIMIT 1;
#2.方法2
select round(sqrt(d),2) as shortest
from(
select distinct (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)
as d
from point_2d a,point_2d b
)c
where d!=0
order by shortest asc
limit 1;

以上是关于LeetCode:Database 31.平面上的最近距离的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode:Database 32.直线上的最近距离

LeetCode:Database 47.销售分析III

LeetCode:Database 71.报告系统状态的连续日期

LeetCode:Database 97.制作会话柱状图

LeetCode:Database 97.制作会话柱状图

leetcode-973最接近原点的K个点