有没有人知道如何在SQL脚本中编写毕达哥拉斯,然后将其链接到表格中的列等,我试图使用的公式是: -
(SQRT(MY_Y_AXIS-Y_AXIS^2)+(MY_X_AXIS-X_AXIS^2)
老实说,我正处于使用SQL的第二天,而我之前的任务只是获取一个序列来处理我的ID,所以如果你可以对输入的内容感到沮丧,那就太棒了。
答案 0 :(得分:1)
应该是
SQRT( POW(MY_Y_AXIS - Y_AXIS, 2) + POW(MY_X_AXIS-X_AXIS, 2) )
答案 1 :(得分:0)
这是毕达哥拉斯定理的一个示例,用于查找PostgreSQL中两个纬度点表之间的最小距离。
create table if not exists public.test_pyth1 (
row_id serial,
lat float,
lon float);
create table if not exists public.test_pyth2 (
row_id serial,
lat float,
lon float
);
insert into public.test_pyth1 (lat, lon) values (1, 1);
insert into public.test_pyth1 (lat, lon) values (0, 2);
insert into public.test_pyth1 (lat, lon) values (1, 3);
insert into public.test_pyth2 (lat, lon) values (2, 1);
insert into public.test_pyth2 (lat, lon) values (2, 2);
insert into public.test_pyth2 (lat, lon) values (2, 3);
with min_distance as (
select buss_stop.row_id bid, MIN(POWER(buss_stop.lat-t.lat, 2) +
POWER(buss_stop.lon-t.lon, 2)) mdistance
from public.test_pyth1 buss_stop
cross join public.test_pyth2 t
group by buss_stop.row_id
),
distances as (
select buss_stop.row_id bid, t.row_id sid, POWER(buss_stop.lat-t.lat, 2) +
POWER(buss_stop.lon-t.lon, 2) distance
from public.test_pyth1 buss_stop
cross join public.test_pyth2 t
)
select *
from distances d
join min_distance md
using(bid)
where md.mdistance = d.distance;