[Leetcode] Investments in 2016
정답
# Write your MySQL query statement below
SELECT ROUND(SUM(tiv_2016), 2) tiv_2016
FROM (
SELECT CASE
WHEN COUNT(*) OVER (PARTITION BY tiv_2015) > 1 THEN tiv_2016
END tiv_2016
, pid
FROM Insurance
INTERSECT
SELECT CASE
WHEN COUNT(*) OVER (PARTITION BY lat, lon) = 1 THEN tiv_2016
END tiv_2016
, pid
FROM Insurance
) t
✅ Point
- 2가지 기준을 모두 충족시키는 행만 가져와야 함
- 기준 1: tiv_2015 값이 2개 이상 존재
- 기준 2: (lat, lon) 쌍이 유일할 것
- 두 조건의 기준 column이 달라 한 번에 GROUP BY 때리는 거로는 불가능 ->
INTERSECT
동시에 만족하는 방향으로 풀이 방향 설정- 기준 1 을 만족하는 pid와 기준 2를 만족하는 pid 값 교집합