Siéntete libre de compartir nuestra web y códigos con otro, necesitamos tu ayuda para hacer crecer esta comunidad.
Solución:
Primero calcule el promedio con la función agregada avg():
SELECT neighborhood, bedrooms, avg(price)
FROM listings
GROUP BY 1,2
ORDER BY 1,2
Luego alimenta el resultado al crosstab()
función como se indica en gran detalle en esta respuesta relacionada:
- Consulta de tabulación cruzada de PostgreSQL
La mejor manera de construir tablas dinámicas en Postgres son las declaraciones Case.
select neighborhood,
round(avg((case when bedroom = 0 then price else 0 end)),2) as "0",
round(avg((case when bedroom = 1 then price else 0 end)),2) as "1",
round(avg((case when bedroom = 2 then price else 0 end)),2) as "2",
round(avg((case when bedroom = 3 then price else 0 end)),2) as "3",
from listings
group by neighborhood;
Esta fue mi salida
NEIGHBORHOOD 0 1 2 3
-------------------- ---------- ---------- ---------- ----------
downtown 0 373.38 328.25 524.63
riverview 0 256.83 0 1341
north 0 199.15 507.85 986.31
Te mostramos las reseñas y valoraciones de los usuarios
Acuérdate de que tienes la capacidad de reseñar tu experiencia si acertaste tu preocupación a tiempo.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)