본문 바로가기

데이터리안

solvesql / 연습문제 - 난이도5 / 폐쇄할 따릉이 정류소 찾기1

728x90

📚문제

저작권 이슈로 게시 X


📝풀이

SELECT station_id
     , name
FROM station
WHERE station_id IN (SELECT s1.station_id
                     FROM station s1
                     LEFT JOIN station s2 ON s1.station_id != s2.station_id
                     WHERE s2.updated_at > s1.updated_at
                     AND 2*6356*ASIN(SQRT((1-COS(RADIANS(s1.lat)-RADIANS(s2.lat)))/2 
                     + COS(RADIANS(s1.lat))*COS(RADIANS(s2.lat))*(1-COS(RADIANS(s1.lng)-RADIANS(s2.lng)))/2)) <= 0.3
                     GROUP BY s1.station_id
                     HAVING COUNT(s2.station_id) >=5)

 

어려운 수학공식이 나오긴 했지만 풀이가 그렇게 어렵진 않다

내가 헤맨 부분은 

한 정류소 ID에 대해서 일치하지 않는 정류소 ID 들의

위도/경도를 비교하는 이슈였는데

📍JOIN의 KEY 값 불일치 조건 

을 활용하면 된다

(추후에도 요긴하게 사용할 것 같으니 잘 기억해두자)

 

+ 그리고 풀면서 뿌듯했던 부분은

구글이나 다른 풀이에 있는 수학 공식을 이용해서 푼 게 아니고

문제에서 나온 수학공식을 그대로 이용해 가면서

직접 만든 수학 공식을 이용했다는 점❗

 

(중간에 수 차례 시행착오

-> lng 대신 lat를 넣은 것

-> COS 공식에서 RADIANS를 취해주지 않았음)

 

 

728x90