otra forma un poco mas resumida seria con el uso de ::
ej:
SELECT
MAX(
(info -> ‘items’ ->> ‘cantidad’) :: integer
)
FROM ordenes
Introdución a las Bases de Datos
Todo lo que aprenderás sobre PostgreSQL para ciencia de datos
Importación de los datos para el proyecto
Breve historia de las bases de datos
Puntos fuertes de las bases de datos relacionales
Conceptos importantes de las bases de datos relacionales
Principales sentencias SQL
Ciencia de Datos
¿Qué es la ciencia de datos?
Aplicación de la ciencia de datos
Equipos orientados a datos
Data science vs. Machine Learning
Particularidades de PostgreSQL
Diferencias entre otros manejadores y PostgreSQL
Conoce los superpoderes de PLPGSQL
PLPGSQL: Stored procedures
PLPGSQL: conteo, registro y triggers
PLPGSQL: Aplicado a data science
Integración con otros lenguajes
Tipos de Datos Personalizados
Casos Prácticos
Explicación de la estructura de la base de datos de ejemplo
Agregación de datos
Pensando en la presentación
Trabajando con objetos
Agregando objetos
Common table expressions
Window functions
Particiones
Platzi movies dashboard
Presentación del proyecto
Top 10
Actualizando precios
Usando rank y percent rank
Ordenando datos geográficos
Datos en el tiempo
Visualizando datos con Tableau
Siguientes pasos
¿Qué sigue?
Compartu tu proyecto de Platzi Movies Dashboard y certifÃcate
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 29
Preguntas 5
otra forma un poco mas resumida seria con el uso de ::
ej:
SELECT
MAX(
(info -> ‘items’ ->> ‘cantidad’) :: integer
)
FROM ordenes
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;
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.
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
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
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;
Nota
Aunque es posible realizar operaciones en objetos JSON, es preferible realizar agregaciones sobre datos primitivos siempre que sea posible, ya que esto suele ser más eficiente en términos de rendimiento.
Va demasiado rápido 😕
SELECT
MIN(
CAST (
info -> 'items' ->> 'cantidad' AS INTEGER
)
),
MAX(
CAST (
info -> 'items' ->> 'cantidad' AS INTEGER
)
),
AVG(
CAST (
info -> 'items' ->> 'cantidad' AS INTEGER
)
),
SUM(
CAST (
info -> 'items' ->> 'cantidad' AS INTEGER
)
)
FROM ordenes;
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.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?