안녕하세요 조인은 아닌거같은데 몬진잘 몰라서.. 조인이라고 제목을 적긴했습니다.
각각 5개의 컬럼과 약 500개의 로우를 갖고있는 두개의 테이블이 있습니다. 두 테이블의 로우갯수는 다릅니다.
질문 내용은 table1의 1번 obs의 위경도와 table2의 전체 위경도를 비교하여
1. 위경도 간 거리가 500미터 보다 작은 로우의 갯수를 table1의 newcol이란 컬럼을 생성하여 넣고 싶습니다. (위경도간 거리 계산 쿼리는 알아두었습니다.)
2. (아니면 위경도 간 거리가 500미터 보다 작은 로우가 하나이상 존재하면 1 아니면 0을 넣어도 됩니다.)
3.또, sale와 count컬럼을 aggregation(sum or agv)하여 table1에 컬럼을 생성하여 값을 넣고 싶습니다.
그럼 소중한 답변 기다리겠습니다.
test.table1
obs name code latitude longitude -- header
1 apple a_100 -34.922345 138.60315
2 bee a_101 -34.718265 138.668655
......
test.table2
obs sale count latitude longitude -- header
1 12345 409 -34.922356 138.60313
2 89798 890 -34.922367 138.60355
....
MERGE INTO table1 x USING ( SELECT a.obs , COUNT(b.obs) sale_cnt , SUM(b.sale) sale_sum , AVG(b.sale) sale_avg FROM table1 a LEFT OUTER JOIN table2 b ON 위경도간거리계산공식(a.latitude, a.longitude, b.latitude, b.longitude) <= 500미터 GROUP BY a.obs ) y ON (x.obs = y.obs) WHEN MATCHED THEN UPDATE SET x.sale_cnt = y.sale_cnt , x.sale_sum = y.sale_sum , x.sale_avg = y.sale_avg ;