Menu
Coddy logo textTech

Riepilogo - Impresa edile immobiliare

Fa parte della sezione Fondamenti del percorso SQL di Coddy. Lezione 51 di 72.

challenge icon

Sfida

Medio

Tabelle e colonne disponibili:

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

Alcuni analisti prevedono quale sarà la crescita degli asset immobiliari. Vogliamo verificare se le loro previsioni sono corrette. 

Per ogni asset nella tabella real_estate, calcola il rapporto tra il value di una data più recente e il valore di una data più vecchia.

Ad esempio, se c'è un asset il cui valore il 2022-01-01 era 5 e il 2022-05-01 era 10, il rapporto è 10/5 = 2.

Ignora tutti i confronti in cui la differenza in giorni tra le due date è inferiore a 101.

Ci sono molte date per ogni asset, quindi ci sono molti rapporti da confrontare. Tieni solo il rapporto più grande per ogni asset.

Infine, dividi questo rapporto per la previsione corrispondente della tabella potential (chiama questo campo ratio_forecast) e ordina i risultati in ordine decrescente.

Il risultato finale dovrebbe contenere asset_id e ratio_forecast.

Considera solo gli asset in cui ratio_forecast è maggiore di 1.

 

Nota: Per ottenere un risultato decimale dall'operazione di divisione (/), a volte è necessario moltiplicare il numeratore per 1.0.

Ad esempio, invece di a / b, usa a * 1.0 / b per ottenere il risultato decimale (quando a e b sono variabili)

Provalo tu

-- Query esterna: dividi il numero calcolato qui sotto per quello corrispondente dell'altra tabella
SELECT potential.asset_id, ____ AS ratio_forecast
FROM (
    -- Query interna: unisci la tabella a se stessa per confrontare una riga precedente con una più recente
    SELECT r1.asset_id, ____ AS ratio
    FROM real_estate AS r1
    JOIN real_estate AS r2 ON ____
    -- Mantieni solo le coppie sufficientemente distanti nel tempo
    WHERE JULIANDAY(r2.date) - JULIANDAY(r1.date) > ____
    -- Una riga di risultato per gruppo, mantenendo solo il confronto con il valore più alto
    GROUP BY r1.asset_id
) AS actual
JOIN potential ON ____
WHERE ratio_forecast > 1
ORDER BY ____

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground SQL