Menu
Coddy logo textTech

Recap - Real Estate Contractor

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası. Ders 51 / 72.

challenge icon

Görev

Orta

Kullanılabilir tablolar ve sütunlar:

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

Bazı analistler gayrimenkul varlıklarının büyümesinin ne olacağını tahmin ediyor. Tahminlerinin doğru olup olmadığını kontrol etmek istiyoruz. 

real_estate tablosundaki her varlık için, newer bir tarihteki value değerinin older bir tarihteki değere oranını hesaplayın.

Örneğin, 2022-01-01 tarihindeki değeri 5 ve 2022-05-01 tarihindeki değeri 10 olan bir varlık varsa, that oran 10/5 = 2 olur.

İki tarih arasındaki gün farkının 101'den küçük olduğu tüm karşılaştırmaları göz ardı edin.

Her varlık için birçok tarih vardır, bu nedenle karşılaştırılacak çok sayıda oran bulunur. Her varlık için only en büyük oranı Keep edin.

Son olarak, bu oranı potential tablosundaki matching forecast değerine divide edin (bu alanı ratio_forecast olarak adlandırın) ve sonuçları azalan düzende ORDER yapın.

Nihai result, asset_id ve ratio_forecast alanlarını içermelidir.

WHERE ratio_forecast değerinin 1'den büyük olduğu varlıkları only tutun.

 

Not: divide işleminden (/) ondalıklı bir sonuç almak için bazen payı 1.0 ile çarpmanız gerekir.

Örneğin, ondalıklı sonucu almak için (a ve b değişken olduğunda) a / b yerine a * 1.0 / b kullanın.

Kendin dene

-- Dış sorgu: aşağıda hesaplanan sayıyı diğer tablodaki eşleşen sayıya böl
SELECT potential.asset_id, ____ AS ratio_forecast
FROM (
    -- İç sorgu: tabloyu kendisiyle eşleştir ki daha eski bir satır daha yeni bir satırla karşılaştırılabilsin
    SELECT r1.asset_id, ____ AS ratio
    FROM real_estate AS r1
    JOIN real_estate AS r2 ON ____
    -- Yalnızca zamanda yeterince uzak olan çiftleri tut
    WHERE JULIANDAY(r2.date) - JULIANDAY(r1.date) > ____
    -- Grup başına bir sonuç satırı, yalnızca tek en büyük karşılaştırmayı tutarak
    GROUP BY r1.asset_id
) AS actual
JOIN potential ON ____
WHERE ratio_forecast > 1
ORDER BY ____

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: SQL playground