No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Agregando objetos

22/34
Recursos

Aportes 20

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

otra forma un poco mas resumida seria con el uso de ::

ej:

SELECT
MAX(
(info -> ‘items’ ->> ‘cantidad’) :: integer
)
FROM ordenes

Yo trabajé con contrataciones públicas del gobierno federal en México, fue una tortura hacer las consultas en MongoDB, saber esto antes me hubiera ahorra mucho tiempo.

Tambien se puede hacer de esta forma sin expresar el CAST

SELECT MIN((INFO -> 'items' ->> 'cantidad') :: integer) min_,
	MAX((INFO -> 'items' ->> 'cantidad') :: integer) max_,
	SUM((INFO -> 'items' ->> 'cantidad') :: integer) sum_,
	AVG((INFO -> 'items' ->> 'cantidad') :: integer) avg_
FROM ORDENES;

Es importante recalcar que a pesar de que Postgres nos permite realizar operaciones sobre los datos de cadenas JSON este proceso resulta costoso, y es recomendable trabajar con tipos de datos básicos siempre que sea posible.

SELECT 
	SUM(
		-- Cambiando a tipo de dato entero
		CAST( info -> 'items' ->> 'cantidad' AS INTEGER)
	),
	MAX(
		CAST( info -> 'items' ->> 'cantidad' AS INTEGER)
	),
	AVG(
		CAST( info -> 'items' ->> 'cantidad' AS INTEGER)
	)
FROM ordenes;```

Para el motor de Postgres es complejo y computacionalmente costoso, hacer cálculos con objetos tipo JSON

También se puede hacer de esta manera

SELECT
MIN((info -> ‘items’ ->> ‘cantidad’) :: INTEGER),
MAX((info -> ‘items’ ->> ‘cantidad’) :: INTEGER),
SUM((info -> ‘items’ ->> ‘cantidad’) :: INTEGER),
AVG((info -> ‘items’ ->> ‘cantidad’) :: INTEGER)
FROM ordenes;

CAST: Transforma un tipo de dato en otro

Cuando traten de hacer operaciones con datos numéricos flotantes, simplemente tienen que especificarlo:

SELECT AVG(
      CAST(
         info -> 'items' ->> 'precio' AS FLOAT
      )
   )
FROM ordenes;

Va demasiado rápido 😕

json o jsonb

la diferencia entre estos dos es la forma en la que se almacena los datos json lo almacena literalmente en cambio jsonb lo almacena de una forma mas eficiente además de tener muchas mas funcionalidades que el json, es por esto que en la mayoria de los casos es mejor elegir jsonb pero en casos específicos como mantener el json intacto o realizar muchas inserciones el json sera mejor que el jsonb

para mas información

Excelente conocer este aspecto, le da mas valor y conocimiento a la hora de presentar información sin complicarse la vida

Esta es como una forma más resumida para trabajar. Ya no quiero bajar tablas sino una columna en jason y desde ahi trabajar con la información e ir dando formato al campo a medida que lo necesite

Interesante este manejo con JSON

Entendido, hay que tener en cuenta el rendimiento

SELECT 
	MIN(
		CAST(
			info -> 'items' ->> 'cantidad' AS INTEGER
		)
	)
FROM ordenes;

SELECT 
	MIN(
		CAST(
			info -> 'items' ->> 'cantidad' AS INTEGER
		)
	),
	MAX(
		CAST(
			info -> 'items' ->> 'cantidad' AS INTEGER
		)
	),
	SUM(
		CAST(
			info -> 'items' ->> 'cantidad' AS INTEGER
		)
	),
	AVG(
		CAST(
			info -> 'items' ->> 'cantidad' AS INTEGER
		)
	)
FROM ordenes;

excelente

interesante

El lenguaje plsql es demasiado poderoso.

Excelente las posibilidades que esto representa.

Muy interesante trabajarlo casi nativo y muy útil ya que trabajamos los datos sin utilizar una capa de negocios.