Menu
Coddy logo textTech

Récapitulatif - Entrepreneur immobilier

Fait partie de la section Les fondamentaux du Journey SQL de Coddy. Leçon 51 sur 72.

challenge icon

Défi

Moyen

Tables et colonnes disponibles :

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

Certains analystes prévoient quelle sera la croissance des actifs immobiliers. Nous voulons vérifier si leurs prévisions sont exactes. 

Pour chaque actif de la table real_estate, calculez le ratio entre la value d'une date plus récente et la valeur d'une date plus ancienne.

Par exemple, si un actif avait une valeur de 5 au 2022-01-01 et de 10 au 2022-05-01, alors ce ratio est de 10/5 = 2.

Ignorez toutes les comparaisons pour lesquelles la différence en jours entre les deux dates est inférieure à 101.

Il existe de nombreuses dates pour chaque actif, donc de nombreux ratios à comparer. Conservez uniquement le ratio le plus grand pour chaque actif.

Enfin, divisez ce ratio par la prévision correspondante de la table potential (appelez ce champ ratio_forecast) et triez les résultats par ordre décroissant.

Le résultat final doit contenir asset_id et ratio_forecast.

Ne conservez que les actifs dont le ratio_forecast est supérieur à 1.

 

Remarque : Pour obtenir un résultat décimal lors d'une opération de division (/), vous devez parfois multiplier le numérateur par 1.0.

Par exemple, au lieu de a / b, utilisez a * 1.0 / b pour obtenir le résultat décimal (lorsque a et b sont des variables).

Essayez vous-même

-- Requête externe : diviser le nombre calculé ci-dessous par celui correspondant de l'autre table
SELECT potential.asset_id, ____ AS ratio_forecast
FROM (
    -- Requête interne : apparier la table avec elle-même pour qu'une ligne plus ancienne puisse être comparée à une plus récente
    SELECT r1.asset_id, ____ AS ratio
    FROM real_estate AS r1
    JOIN real_estate AS r2 ON ____
    -- Ne conserver que les paires suffisamment éloignées dans le temps
    WHERE JULIANDAY(r2.date) - JULIANDAY(r1.date) > ____
    -- Une ligne de résultat par groupe, en ne conservant que la seule plus grande comparaison
    GROUP BY r1.asset_id
) AS actual
JOIN potential ON ____
WHERE ratio_forecast > 1
ORDER BY ____

Toutes les leçons de Les fondamentaux

Entraînez-vous par vous-même : Playground SQL