612_Shortest Distance in a Plane
[medium]
Table point_2d
holds the coordinates (x,y) of some unique points (more than two) in a plane.
Write a query to find the shortest distance between these points rounded to 2 decimals.
| x | y |
|----|----|
| -1 | -1 |
| 0 | 0 |
| -1 | -2 |
The shortest distance is 1.00 from point (-1,-1) to (-1,2). So the output should be:
| shortest |
|----------|
| 1.00 |
Solution 1: using join
SELECT round(sqrt(min(power(p1.x-p2.x, 2) + power(p1.y-p2.y, 2))), 2) AS shortest
FROM point_2d p1 JOIN point_2d p2 ON (p1.x, p1.y) != (p2.x, p2.y);
Solution 2: using subquery
SELECT min(dist) AS shortest
FROM (
SELECT p.x, p.y,
(SELECT round(min(sqrt(power(p.x - x, 2) + power(p.y - y, 2))), 2)
FROM point_2d
WHERE (x, y) != (p.x, p.y)) AS dist
FROM point_2d AS p
) AS t;
Last updated
Was this helpful?