Menu
Coddy logo textTech

Recap - Real Estate Contractor

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 :

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

Certains analystes prévoient quelle va être 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, s'il y a un actif dont la valeur au 2022-01-01 était de 5 et au 2022-05-01 était de 10, alors ce ratio est de 10/5 = 2.

Ignorez toutes les comparaisons où la différence de jours entre les deux dates est inférieure à 101.

Il y a plusieurs dates pour chaque actif, donc plusieurs ratios à comparer. Ne conservez que le plus grand ratio pour chaque actif.

Enfin, divisez ce ratio par le forecast correspondant de la table potential (nommez 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 pour lesquels le ratio_forecast est supérieur à 1.

 

Remarque : Pour obtenir un résultat décimal avec l'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 garder 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 gardant 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