Menu
Coddy logo textTech

복습 - 부동산 계약업자

Coddy SQL 여정의 기초 섹션에 포함된 레슨. 72개 중 51번째.

challenge icon

챌린지

중급

사용 가능한 테이블과 열:

  • real_estate: asset_id, value, date
  • potential: asset_id, forecast

일부 분석가들은 real estate 자산의 성장률이 어떻게 될지 forecast합니다. 우리는 그들의 forecast가 사실인지 확인하려고 합니다. 

각 asset에 대해 real_estate 테이블의 더 newer date의 value와 더 older date의 value 사이의 비율을 계산하세요.

예를 들어, 어떤 asset의 2022-01-01 value가 5이고 2022-05-01의 value가 10이라면 해당 비율은 10/5 = 2입니다.

두 date 사이의 일수 차이가 101보다 작은 모든 비교를 무시하세요.

각 asset에는 date가 많으므로 비교할 ratio도 많습니다. 각 asset에 대해 가장 큰 ratio만 Keep하세요.

마지막으로 이 ratio를 potential 테이블에서 matching되는 forecast로 divide하고(이 필드를 ratio_forecast라고 부름), result를 내림차순으로 정렬하세요.

최종 result에는 asset_idratio_forecast가 있어야 합니다.

ratio_forecast가 1보다 큰 asset만 Keep하세요.

 

참고: divide 연산(/)에서 소수 결과를 얻으려면 때때로 분자에 1.0을 곱해야 합니다.

예를 들어 소수 결과를 얻으려면 a / b 대신 a * 1.0 / b를 사용하세요(a와 b가 변수인 경우).

직접 해보기

-- 외부 쿼리: 아래에서 계산된 숫자를 다른 테이블의 일치하는 숫자로 나눕니다
SELECT potential.asset_id, ____ AS ratio_forecast
FROM (
    -- 내부 쿼리: 테이블을 자신과 페어링하여 이전 행을 이후 행과 비교할 수 있게 합니다
    SELECT r1.asset_id, ____ AS ratio
    FROM real_estate AS r1
    JOIN real_estate AS r2 ON ____
    -- 시간상 충분히 떨어져 있는 쌍만 유지합니다
    WHERE JULIANDAY(r2.date) - JULIANDAY(r1.date) > ____
    -- 그룹당 하나의 결과 행, 가장 큰 단일 비교만 유지합니다
    GROUP BY r1.asset_id
) AS actual
JOIN potential ON ____
WHERE ratio_forecast > 1
ORDER BY ____

기초의 모든 레슨

직접 연습해 보세요: SQL 플레이그라운드