Este proyecto propone un sistema de gestión para fincas agrícolas, y permite el seguimiento y administración de diferentes cultivos, lotes, recogidas, despachos, y facturación, entre otros. A través del esquema de base de datos proporcionado, se puede realizar un seguimiento de varios aspectos clave de las operaciones agrícolas, desde la plantación hasta la venta de productos.
El gerente de la empresa requiere ciertas informaciones históricas sobre el desempeño de sus cultivos. Es responsabilidad del cursante ayudarle al gerente a responder sus inquietudes.
- m_cultivo:
id
(text): Identificador único para cada tipo de cultivo.nombre
(text): Nombre del cultivo.- Representa diferentes tipos de cultivos que se pueden tener en una finca.
- finca:
id
(text): Identificador único para cada finca.nombre
(text): Nombre de la finca.- Representa las fincas donde se lleva a cabo la agricultura. Cada finca puede tener varios lotes.
- lote:
id
(text): Identificador único para cada lote.nombre
(text): Nombre del lote.id_finca
(text): Identificador de la finca a la que pertenece el lote.id_cultivo
(text): Identificador del tipo de cultivo en el lote.- Representa una subdivisión de una finca. En cada lote se cultiva un tipo específico de cultivo.
- usuario:
id
(text): Identificador único para cada usuario.nombre
(text): Nombre del usuario.correo
(text): Correo electrónico del usuario.- Representa los usuarios que interactúan con el sistema, estos pueden ser empleados o administradores.
- recogida:
id
(text): Identificador único para cada recogida.fecha
(timestamp): Fecha y hora en que se realizó la recogida.id_lote
(text): Identificador del lote donde se realizó la recogida.cantidad
(float): Cantidad de producto recogido en kilogramos.id_usuario
(text): Identificador del usuario que realizó la recogida.id_despacho
(text): Identificador del despacho en el que se incluyó la recogida.- Representa el evento de recogida de productos en un lote específico por un usuario específico.
- cliente:
id
(text): Identificador único para cada cliente.nombre
(text): Nombre del cliente.- Representa los clientes que compran los productos agrícolas.
- factura:
id
(text): Identificador único para cada factura.fecha
(timestamp): Fecha en que se generó la factura.total
(float): Total a pagar en la factura.- Representa las facturas generadas por la venta de productos a los clientes.
- despacho:
id
(text): Identificador único para cada despacho.fecha
(timestamp): Fecha en que se realizó el despacho.id_cliente
(text): Identificador del cliente al que se despacha.id_factura
(text): Identificador de la factura asociada al despacho.- Representa el evento de despacho de productos a los clientes.
- precio:
id
(text): Identificador único para cada precio.id_cultivo
(text): Identificador del tipo de cultivo.valor
(float): Precio por unidad del cultivo.fecha
(timestamp): Fecha en que se estableció el precio.- Representa el precio internacional de mercado establecido para cada tipo de cultivo en una fecha específica. Se da para el primer día de cada mes por cada cultivo y el precio es en dólares por kilogramo.
-
lote:
lote.id_finca
referencia afinca.id
: Establece la relación entre un lote y la finca a la que pertenece.lote.id_cultivo
referencia am_cultivo.id
: Establece la relación entre un lote y el tipo de cultivo que se cultiva en ese lote.
-
recogida:
recogida.id_lote
referencia alote.id
: Relaciona una recogida con el lote donde se realizó.recogida.id_despacho
referencia adespacho.id
: Relaciona una recogida con el despacho donde fue incluida.
-
despacho:
despacho.id_cliente
referencia acliente.id
: Relaciona un despacho con el cliente al que se destinó.despacho.id_factura
referencia afactura.id
: Relaciona un despacho con la factura correspondiente.
-
precio:
precio.id_cultivo
referencia am_cultivo.id
: Relaciona un precio con el tipo de cultivo al que corresponde.
Una vez termines de importar tus datos, explora la información y la base de datos. Cuando te sientas en confianza, revisa las 27 preguntas que exponemos más abajo.
Dichas 27 preguntas serán evaluadas, y deberás ingresar las respuestas a cada una de estas preguntas en este formulario.
Finalmente, recordamos que PrevalentU es un ejercicio académico compuesto por profesionales. Esperamos que este sea un trabajo honesto, individual, y ejecutado 100% por tí.
- ¿Cuántos lotes hay en la finca "La Esperanza"?
- ¿Cuál es el cultivo más recogido en la finca "El Encanto"?
- ¿Cuál ha sido el total recolectado de palma africana en la finca "La Ilusión"?
- ¿Cuál es el valor total de facturas emitidas en septiembre de 2023?
- ¿Cuántos despachos se han hecho en la finca "La Prevalencia"?
- ¿Cuál es el cliente que ha tenido más despachos?
- ¿Cuántos kilogramos de arroz se han recolectado en total?
- ¿Qué usuario ha participado en más recogidas?
- ¿Cuál es el precio promedio por kilogramo de palma africana desde enero de 2021 hasta octubre de 2023?
- ¿Cuál es el total de kilogramos recolectados en la finca "El Resguardo" durante el año 2022?
- ¿Cuál es el cultivo que tuvo el precio más alto en enero de 2023?
- ¿Cuál ha sido el valor total de las facturas del cliente "Cultivos y Semillas La Tierra" durante el año 2023?
- ¿Cuántas recogidas se han realizado en la finca "La Esperanza" en el mes de mayo de 2021?
- ¿Cuál es el total de kilogramos despachados por cada cliente en septiembre de 2022?
- ¿Cuál es el usuario que ha realizado la recogida con la mayor cantidad de kilogramos en un solo día y cuánto recogió?
- ¿Cuál es el total de peso recogido por cada finca en el año 2022?
- ¿Cuál cliente ha tenido más despachos en el año 2023?
- ¿Qué cultivo ha tenido la mayor variación en precio a lo largo del tiempo?
- ¿Cuál es el top 3 de cultivos por la cantidad total recolectada desde enero de 2021 hasta octubre de 2023?
- ¿Cuál es la recogida que presenta mayor diferencia vs el promedio de recogida de su lote?
- Cree una vista llamada vista_resumen_recogida_cedula (por ejemplo, vista_resumen_recogida_1065377193), que contenga un resumen de la información de las recogidas por finca y por lote, incluyendo el total recogido y el promedio de recogida por día. La vista debe mostrar 4 columnas:
- nombre de la finca
- nombre del lote
- total recogido en ese lote en esa finca
- promedio recogido por día en ese lote en esa finca
- Cree una función en SQL que permita calcular el total facturado por un cliente en un mes específico. La función se debe llamar calcular_total_facturado_cedula (por ejemplo calcular_total_facturado_1065377193), y debe recibir dos parámetros: la fecha inicial y la fecha final, ambos textos en formato yyyy-mm-dd.
La función debe devolver un query con 3 columnas:
- el id del cliente
- el nombre del cliente
- el total facturado en ese rango de fechas
- Al DDL entregado le falta, a propósito, un foreign key. Analiza el Diagrama ER, identifica qué foreign key falta, y escribe a continuación el código para crear el foreign key faltante.
- Haz tu mejor esfuerzo para que este query se ejecute lo más rápido posible, creando los índices que consideres necesarios.
select * from public.recogida r
where
r.fecha between '2023-01-01' and '2023-01-31'
and r.id_lote = '031c6579-d90e-4974-8263-6f47aecbe084'
- Sube una captura de pantalla con el resultado de la ejecución del siguiente query
explain analyze
select * from public.recogida r
where
r.fecha between '2023-01-01' and '2023-01-31'
and r.id_lote = '031c6579-d90e-4974-8263-6f47aecbe084'
- Explica con tus palabras las diferencias que hay entre un stored procedure y una función de SQL
- Explica con tus palabras las diferencias que hay entre una vista y una vista materializada en SQL.