Open jos213 opened 1 week ago
hola te recomiendo que todo lo que sea "ID" lo coloques como un "integer", en la tabla de inventario "cantidad_stock" tambien es un interger ya que es un numero no un VARCHAR que se usa mas que todo para textos, "fecha_caducidad" es un dato tipo "Date" no VARCHAR
Crear tabla Inventario CREATE TABLE Inventario ( inventario_id SERIAL PRIMARY KEY,
ingrediente_id SERIAL REFERENCES Ingrediente(ingrediente_id), cantidad_stock VARCHAR(233), fecha_caducidad VARCHAR(213), precio_compra DECIMAL(13, 2),
origen VARCHAR(109), proveedor_id SERIAL REFERENCES Proveedor(proveedor_id)
);
-- Crear tabla Proveedor CREATE TABLE Proveedor ( proveedor_id SERIAL PRIMARY KEY,
nombre VARCHAR(125), contacto VARCHAR(125),
telefono VARCHAR(15),
email VARCHAR(32), especialidad VARCHAR(100),
acuerdos_comerciales VARCHAR(255)
comerciales );
-- Crear tabla Alerta_Reposicion CREATE TABLE Alerta_Reposicion ( alerta_id SERIAL PRIMARY KEY,
ingrediente_id SERIAL REFERENCES Ingrediente(ingrediente_id), nivel_minimo INT,
fecha_alerta DATE
);
-- Crear tabla Desperdicio CREATE TABLE Desperdicio ( desperdicio_id SERIAL PRIMARY KEY,
ingrediente_id SERIAL REFERENCES Ingrediente(ingrediente_id), cantidad INT,
motivo VARCHAR(255),
fecha DATE
);
-- Consulta con CTE (Common Table Expression) WITH InventarioResumen AS ( SELECT p.nombre AS proveedor_nombre, SUM(i.cantidad_stock) AS total_stock, SUM(d.cantidad) AS motivo_total, SUM(d.cantidad * i.precio_compra) / NULLIF(SUM(d.cantidad), 0) AS compra_promedio FROM Inventario i JOIN Proveedor p ON i.proveedor_id = p.proveedor_id
LEFT JOIN Desperdicio d ON i.ingrediente_id = d.ingrediente_id
GROUP BY p.nombre
);