https://leetcode.com/problems/investments-in-2016/description/
Column Name | Type |
pid | int |
tiv_2015 | float |
tiv_2016 | float |
lat | float |
lon | float |
RequestAccepted 테이블:
- pid : 테이블의 고유 키, 보험 가입자의 ID
- tiv_2015 : 2015년의 총 투자 가치
- tiv_2016 : 2016년의 총 투자 가치
- lat : 보험 가입자의 도시의 위도입니다. lat는 NULL이 아님
- lon : 보험 가입자의 도시의 경도입니다. lon은 NULL이 아님
같은 tiv_2015 값을 가진 다른 보험 가입자가 있는 경우와 다른 모든 보험 가입자와 동일한 도시에 위치하지 않는 경우(즉, (lat, lon) 속성 쌍이 고유해야 함)에 해당하는 보험 가입자들의 2016년 총 투자 가치 tiv_2016의 합계를 보고하는 해결책을 작성하세요. tiv_2016은 소수점 둘째 자리까지 반올림하세요.
select
lat,
lon,
count(concat(lat, lon)) AS lat_lon
from Insurance
group by concat(lat, lon)
도시의 유일한 위치를 반환하기 위해 위도와 경도를 결합해준다.
select
lat,
lon
from
(select
lat,
lon,
count(concat(lat, lon)) AS lat_lon
from Insurance
group by concat(lat, lon)) a
where lat_lon > 1
결합된 위도와 경도가 유일하지 않은 경우만 골라서 출력한다. (이후에 조건문에 사용하기 위함이다.)
select tiv_2015
from Insurance
group by tiv_2015
having count(tiv_2015) > 1
이번에는 tiv_2015가 유일한 값이 아닌 경우만 선별해서 출력한다. (이후에 조건문에 사용하기 위함이다.)
select *
from Insurance
where tiv_2015 in
(select tiv_2015
from Insurance
group by tiv_2015
having count(tiv_2015) > 1)
해당 쿼리를 where 절의 조건으로 사용해서 tiv_2015가 유일한 값이 아닌경우(tiv_2015가 위의 쿼리에 속할 경우)만 출력한다.
select *
from Insurance
where tiv_2015 in
(select tiv_2015
from Insurance
group by tiv_2015
having count(tiv_2015) > 1)
and (lat, lon) not in
(select
lat,
lon
from
(select
lat,
lon,
count(concat(lat, lon)) AS lat_lon
from Insurance
group by concat(lat, lon)) a
where lat_lon > 1)
같은 방법으로 위도와 경도에 대한 쿼리를 where절의 조건으로 사용해서 lat, lon이 유일한 값인 경우(lat, lon가 위도와 경도에 대한 쿼리 에 속하지 않을 경우)를 추가적인 조건으로 사용한다.
select round(sum(tiv_2016), 2) tiv_2016
from Insurance
where tiv_2015 in
(select tiv_2015
from Insurance
group by tiv_2015
having count(tiv_2015) > 1)
and (lat, lon) not in
(select
lat,
lon
from
(select
lat,
lon,
count(concat(lat, lon)) AS lat_lon
from Insurance
group by concat(lat, lon)) a
where lat_lon > 1)
마지막으로 tiv_2016을 모두 더해준 뒤 반올림하면 완료!
아직 where구문에 다른 쿼리를 사용해서 원하는 데이터만 출력하는 부분이 부족한 것같다.
'코딩일기' 카테고리의 다른 글
SQL 코드카타 119 - Department Top Three Salaries (3) | 2024.07.14 |
---|---|
알고리즘 코드카타 54 - 2016년 (복습) (0) | 2024.07.12 |
SQL 코드카타 117 - Friend Requests II: Who Has the Most Friends (0) | 2024.07.12 |
SQL 코드카타 116 - Restaurant Growth (0) | 2024.07.12 |
알고리즘 코드카타 53 - 명예의 전당 (1) (복습) (0) | 2024.07.11 |