복습 - 부동산 계약업자
Coddy SQL 여정의 기초 섹션에 포함된 레슨. 72개 중 51번째.
챌린지
중급사용 가능한 테이블과 열:
real_estate:asset_id,value,datepotential: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_id와 ratio_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 플레이그라운드