Menu
Coddy logo textTech

Recap - Real Estate Contractor

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

challenge icon

챌린지

중급

사용 가능한 테이블과 컬럼:

  • <strong>real_estate</strong>: <strong>asset_id</strong>, <strong>value</strong>, <strong>date</strong>
  • <strong>potential</strong>: <strong>asset_id</strong>, <strong>forecast</strong>

일부 분석가들은 부동산 자산의 성장이 어떻게 될지 예측합니다. 우리는 그들의 예측이 맞는지 확인하고자 합니다. 

real_estate 테이블의 각 자산에 대해, 최신 날짜의 value와 이전 날짜의 value 사이의 비율을 계산하세요.

예를 들어, 2022-01-01에 값이 5이고 2022-05-01에 값이 10인 자산이 있다면 해당 비율은 10/5 = 2입니다.

두 날짜 간의 일수 차이가 101보다 작은 모든 비교는 무시하세요.

각 자산마다 많은 날짜가 있어 비교할 비율이 많습니다. 각 자산별로 가장 비율만 유지하세요.

마지막으로, 이 비율을 potential 테이블의 매칭되는 forecast 값으로 나누고(이 필드 이름을 ratio_forecast라 지정), 결과를 내림차순으로 정렬하세요.

최종 결과에는 asset_idratio_forecast가 포함되어야 합니다.

ratio_forecast가 1보다 큰 자산만 유지하세요.

 

참고: 나눗셈 연산자(/)에서 소수점 결과를 얻으려면 분자에 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 플레이그라운드