DATASET QUERY
DROP TABLE IF EXISTS location_1d;
CREATE TABLE location_1d (
x1 integer
, x2 integer
);
INSERT INTO location_1d
VALUES
( 5 , 10)
, (10 , 5)
, (-2 , 4)
, ( 3 , 3)
, ( 0 , 1)
;
절대값, 제곱근, 루트 계산(ABS, POWER, SQRT)
ABS는 절대값을 계산하는 함수이며, POWER는 제곱함수, SQRT는 제곱근을 구하는 함수이다.
select
abs(x1 - x2)
,power(x1 - x2, 2) as Squared
,sqrt(power(x1 - x2, 2)) as Squared_root
from location_1d;
DATASET2 QUERY
DROP TABLE IF EXISTS location_2d;
CREATE TABLE location_2d (
x1 integer
, y1 integer
, x2 integer
, y2 integer
);
INSERT INTO location_2d
VALUES
(0, 0, 2, 2)
, (3, 5, 1, 2)
, (5, 3, 2, 1)
;
두 점의 거리 구하기(Point)
보통 두점의 거리를 구할때는 유클리드 거리를 사용한다. 유클리드 거리 공식은 다음과 같다
이를 Sqrt, power함수를 활용해서 구현할 수도 있지만 POINT함수를 써도 된다.
point(x1, y1) <-> point(x2,y2)
select sqrt(power(x1 - x2,2) + power(y1 - y2,2)) as dist
,point(x1, y1) <-> point(x2,y2) as point_dist
from location_2d;
728x90
반응형
'SQL & DB > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] Window Function(윈도우 함수), 순위함수 (0) | 2021.01.07 |
---|---|
[PostgreSQL] 집약함수와 Grouping(COUNT, SUM, AVG, MAX, MIN, GROUP BY) (0) | 2021.01.07 |
[PostgreSQL] 값 비교(CASE, SIGN, GREATEST, LEAST), 평균값 구하기 (0) | 2021.01.07 |
[PostgreSQL] NULL값 처리 (COALESCE, NULLIF) (0) | 2021.01.07 |
[PostgreSQL] 날짜 다루기(CURRENT_DATE, CURRENT_TIMESTAMP, CAST, EXTRACT) (0) | 2021.01.06 |