Menu
Coddy logo textTech

Rückblick – Immobilienauftragnehmer

Teil des Abschnitts Grundlagen der SQL-Journey von Coddy. Lektion 51 von 72.

challenge icon

Aufgabe

Mittel

Verfügbare Tabellen und Spalten:

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

Einige Analysten prognostizieren, wie stark Immobilienwerte wachsen werden. Wir möchten überprüfen, ob ihre Prognose zutrifft. 

Berechne für jedes Asset in der Tabelle real_estate das Verhältnis zwischen dem value eines neueren Datums und dem Wert eines älteren Datums.

Wenn beispielsweise ein Asset am 2022-01-01 den Wert 5 und am 2022-05-01 den Wert 10 hatte, beträgt dieses Verhältnis 10/5 = 2.

Ignoriere alle Vergleiche, bei denen der Tagesunterschied zwischen den beiden Daten kleiner als 101 ist.

Für jedes Asset gibt es viele Daten und daher viele zu vergleichende Verhältnisse. Behalte nur das größte Verhältnis für jedes Asset.

Teile dieses Verhältnis schließlich durch die passende Prognose aus der Tabelle „potential“ (nenne dieses Feld ratio_forecast) und sortiere die Ergebnisse absteigend.

Das Endergebnis sollte asset_id und ratio_forecast enthalten.

Behalte nur die Assets, bei denen ratio_forecast größer als 1 ist.

 

Hinweis: Um bei einer Division (/) ein Dezimalergebnis zu erhalten, musst du den Zähler manchmal mit 1.0 multiplizieren.

Verwende beispielsweise statt a / b a * 1.0 / b, um das Dezimalergebnis zu erhalten (wenn a und b Variablen sind).

Probier es selbst

-- Äußere Abfrage: teile die unten berechnete Zahl durch die passende aus der anderen Tabelle
SELECT potential.asset_id, ____ AS ratio_forecast
FROM (
    -- Innere Abfrage: verknüpfe die Tabelle mit sich selbst, damit eine ältere Zeile mit einer neueren verglichen werden kann
    SELECT r1.asset_id, ____ AS ratio
    FROM real_estate AS r1
    JOIN real_estate AS r2 ON ____
    -- Behalte nur die Paare, die zeitlich weit genug auseinander liegen
    WHERE JULIANDAY(r2.date) - JULIANDAY(r1.date) > ____
    -- Eine Ergebniszeile pro Gruppe, wobei nur der einzelne größte Vergleich behalten wird
    GROUP BY r1.asset_id
) AS actual
JOIN potential ON ____
WHERE ratio_forecast > 1
ORDER BY ____

Alle Lektionen in Grundlagen

Übe selbstständig: SQL-Playground