Menu
Coddy logo textTech

復習 - 不動産請負業者

CoddyのSQLジャーニー「基礎」セクションの一部。レッスン 51/72。

challenge icon

チャレンジ

中級

利用可能なテーブルと列:

  • real_estateasset_idvaluedate
  • potentialasset_idforecast

一部のアナリストは、不動産資産の成長がどうなるかを予測します。私たちは、その forecast が正しいかを確認したいと考えています。 

各資産について、real_estate テーブル内の newer date の value と older date の value の比率を計算してください。

たとえば、ある資産の 2022-01-01 の value が 5 で、2022-05-01 の value が 10 である場合、that ratio は 10/5 = 2 です。

2つの日付の日数の差が 101 より小さい比較はすべて無視してください。

各資産には多くの日付があるため、比較する ratio も多数あります。各資産について最大の ratio のみを keep してください。

最後に、この ratio を potential テーブルの matching forecast で divide し、このフィールドを ratio_forecast と呼び、結果を降順に並べ替えてください。

最終結果には asset_idratio_forecast が含まれている必要があります。

ratio_forecast が 1 より大きい資産のみを Keep してください。

 

注:divide 操作(/)で小数の結果を得るには、分子に 1.0 を掛ける必要がある場合があります。

たとえば、(a と b が変数の場合)小数の結果を得るには、a / b の代わりに a * 1.0 / 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) > ____
    -- グループごとに1つの結果行とし、最大の比較のみを保持する
    GROUP BY r1.asset_id
) AS actual
JOIN potential ON ____
WHERE ratio_forecast > 1
ORDER BY ____

基礎のすべてのレッスン

自分で練習してみよう: SQLプレイグラウンド