Ciao a tutti!
Avrei bisogno che mi aiutaste a completare una query!
Questo è il testo della query:
Trovare la città con il più alto costo medio di vendita al metro quadro di immobili ad uso privato rispetto alle città della stessa regione.
Mentre questo è quello che ho fatto io fino adesso.
codice:
SELECT recapito.regione, recapito.comune, AVG(annuncio.prezzo/immobile.mq) AS costo_medio
FROM annuncio JOIN immobile ON (annuncio.id_i = immobile.id_i)
JOIN recapito ON (immobile.id_i = recapito.id_i)
WHERE immobile.uso = 'privato' AND prezzo IS NOT NULL
GROUP BY recapito.regione, recapito.comune
HAVING AVG(annuncio.prezzo/immobile.mq) >=
ALL (SELECT AVG(annuncio.prezzo/immobile.mq) AS costo_medio
FROM annuncio JOIN immobile ON (annuncio.id_i = immobile.id_i)
JOIN recapito ON (immobile.id_i = recapito.id_i)
WHERE immobile.uso = 'privato' AND prezzo IS NOT NULL
GROUP BY recapito.regione, recapito.comune)
ORDER BY recapito.regione, recapito.comune
Così mi trova per ogni città inserita, quando il prezzo non è nullo, la media del costo per mq.
Ma io devo trovare la città con il più alto costo!
Non posso fare MAX(AVG(...)) perché Postgres non me lo permette!
E ogni volta che provo ad aggiungerci anche il MAX trovo solo la città in assoluto più costosa per prezzo/mq!!!
E per quanto riguarda questa, sapreste dirmi se è giusta o se sbaglio qualcosa?
Trovare gli annunci di vendita di immobili il cui costo al metro quadro è inferiore al
20% del costo medio al metro quadro degli annunci attivi per immobili della stessa città e della stessa tipologia.
codice:
SELECT annuncio.id_a, recapito.comune, immobile.tipo FROM annuncio JOIN immobile ON (annuncio.id_i = immobile.id_i) JOIN recapito ON (immobile.id_i = recapito.id_i)
WHERE annuncio.prezzo IS NOT NULL
AND (annuncio.prezzo/immobile.mq) <
ALL (SELECT (annuncio.prezzo/immobile.mq)*20/100 FROM annuncio JOIN immobile ON (annuncio.id_i = immobile.id_i) JOIN recapito ON (immobile.id_i = recapito.id_i)
WHERE annuncio.prezzo IS NOT NULL AND annuncio.attivo = TRUE)
GROUP BY recapito.comune, immobile.tipo, annuncio.id_a
ORDER BY annuncio.id_a