Menu
Coddy logo textTech

Repaso: contratista inmobiliario

Parte de la sección Fundamentos del Journey de SQL de Coddy. Lección 51 de 72.

challenge icon

Desafío

Intermedio

Tablas y columnas disponibles:

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

Algunos analistas pronostican cuál será el crecimiento de los activos inmobiliarios. Queremos comprobar si su pronóstico es verdadero. 

Para cada activo de la tabla real_estate, calcula la proporción entre el value de una fecha más reciente y el valor de una fecha más antigua.

Por ejemplo, si hay un activo cuyo valor era 5 el 2022-01-01 y 10 el 2022-05-01, después esa proporción es 10/5 = 2.

Ignora todas las comparaciones cuya diferencia en días entre las dos fechas sea menor que 101.

Hay muchas fechas para cada activo, por lo que hay muchas proporciones que comparar. Conserva solo la proporción más grande para cada activo.

Finalmente, divide esta proporción entre el pronóstico correspondiente de la tabla potential (llama a este campo ratio_forecast) y ordena los resultados en orden descendente.

El resultado final debe contener asset_id y ratio_forecast.

Conserva solo los activos cuyo ratio_forecast sea mayor que 1.

 

Nota: Para obtener un resultado decimal de la operación de división (/), a veces necesitas multiplicar el numerador por 1.0.

Por ejemplo, en lugar de a / b, usa a * 1.0 / b para obtener el resultado decimal (cuando a y b son variables).

Pruébalo tú mismo

-- Consulta externa: divide el número calculado abajo por el correspondiente de la otra tabla
SELECT potential.asset_id, ____ AS ratio_forecast
FROM (
    -- Consulta interna: empareja la tabla consigo misma para que una fila más antigua pueda compararse con una más reciente
    SELECT r1.asset_id, ____ AS ratio
    FROM real_estate AS r1
    JOIN real_estate AS r2 ON ____
    -- Conserva solo los pares que están lo suficientemente separados en el tiempo
    WHERE JULIANDAY(r2.date) - JULIANDAY(r1.date) > ____
    -- Una fila de resultado por grupo, conservando solo la única comparación más grande
    GROUP BY r1.asset_id
) AS actual
JOIN potential ON ____
WHERE ratio_forecast > 1
ORDER BY ____

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de SQL