조건절에 서브쿼리를 사용하는 것이 아직 많이 헷갈리지만, 차근차근 해결해나갈 나름의 해결책을 간단하게 정리해보고자 합니다.
leetcode | 585. Investments in 2016
'모든 보험 계약자를 위해 2016년 모든 총 투자 가치(tiv_2016)의 합계를 보고하는 솔루션 작성하기'
[조건]
1. tiv_2015: 다른 행과 동일한 값이 있어야 함
2. (lat, lon): 다른 행과 중복된 쌍이 있으면 안됨
3. 결과값은 소수점 이하 두 자리까지 반올림할 것
우선, leetcode 문제에서 제가 작성한 정답쿼리는 다음과 같습니다.

조건2,3번을 만족시키기 위해서는 이와 같이 WHERE 조건절에 서브쿼리가 두 번 들어가야 합니다.
서브쿼리를 조건절에 바로 넣다보면, 결과값을 출력하며 수정하는 과정에서 어려움을 겪을 수 있습니다.
이러한 경우에는 주석 처리를 통해 조건1과 조건2를 따로따로 출력해보며 얻은 두 서브쿼리를, 맨 마지막에 WHERE 조건절로 합쳐 넣는 방식이 효과적입니다.

서브쿼리 문제를 풀 때는 머릿속으로 정리를 해볼 것이 아니라, 주석을 활용해 구하고자 하는 값을 하나씩 작성해보는 습관을 들이는 것이 좋겠습니다.
STEP1. 문제를 이해하는 과정에서, 해당 문제에 서브쿼리가 필요할지 판단하기
STEP2. 서브쿼리를 활용할 조건을 확인하고, 글로 정리해보기
STEP3. 메인쿼리는 주석처리를 해두고, 조건절에 들어갈 서브쿼리를 하나씩 작성해보기
STEP4. 메인쿼리에 구해놓은 서브쿼리를 넣고, 결과 추출하기