Agregar datos JSON
En este paso, exploraremos cómo agregar datos almacenados en columnas JSONB
en PostgreSQL.
Primero, conéctese a la base de datos PostgreSQL utilizando el comando psql
como el usuario postgres
:
sudo -u postgres psql
La agregación de datos JSONB
a menudo implica extraer valores de los objetos JSONB
y luego aplicar funciones de agregación como SUM
, AVG
, MIN
, MAX
y COUNT
.
Para calcular el precio promedio de todos los productos, puede utilizar la siguiente consulta:
SELECT AVG((data ->> 'price')::numeric) FROM products;
Aquí, extraemos el price
como texto usando ->>
, lo convertimos a un tipo numérico y luego calculamos el promedio usando la función AVG
.
Añadamos un campo "category" (categoría) a nuestros productos:
UPDATE products SET data = jsonb_set(data, '{category}', '"Electronics"'::JSONB) WHERE id IN (1,4,5);
UPDATE products SET data = jsonb_set(data, '{category}', '"Accessories"'::JSONB) WHERE id IN (2,3);
UPDATE products SET data = jsonb_set(data, '{category}', '"Computers"'::JSONB) WHERE id IN (6);
Ahora, podemos contar el número de productos en cada categoría:
SELECT data ->> 'category', COUNT(*) FROM products GROUP BY data ->> 'category';
Esta consulta extrae el valor de category
como texto y agrupa las filas basándose en este valor.
Calculemos el precio total de todos los productos en la categoría "Electronics" (Electrónica).
SELECT SUM((data ->> 'price')::numeric) FROM products WHERE data ->> 'category' = 'Electronics';
Esta consulta debería devolver la suma de los precios de la Laptop (Portátil), Monitor y Gaming PC (PC para juegos).
Finalmente, salga del shell psql
:
\q