Загрузка данных


CREATE OR REPLACE VIEW Vibor AS
SELECT 
    pb.BatchCode,
    p.Name AS ProductName,
    pb.ExpirationDate,
    DATEDIFF(pb.ExpirationDate, CURDATE()) AS DaysLeft,
    pb.Quantity,
    pb.Status
FROM ProductBatch pb
JOIN Product p ON pb.ProductCode = p.ProductCode
WHERE DATEDIFF(pb.ExpirationDate, CURDATE()) <= 30 
   OR pb.Status = 'ExpiringSoon'
ORDER BY pb.ExpirationDate;

CREATE OR REPLACE VIEW Result AS
SELECT 
    COUNT(*) AS TotalBatches,
    SUM(Quantity) AS TotalQuantity,
    SUM(CASE WHEN Status = 'Expired' THEN Quantity ELSE 0 END) AS ExpiredQuantity,
    COUNT(CASE WHEN Status = 'ExpiringSoon' THEN 1 END) AS ExpiringSoonCount,
    MIN(DATEDIFF(ExpirationDate, CURDATE())) AS MinDaysLeft,
    AVG(DATEDIFF(ExpirationDate, CURDATE())) AS AvgDaysLeft
FROM ProductBatch;

CREATE OR REPLACE VIEW Itog AS
SELECT 
    p.Name AS Product,
    pb.BatchCode,
    pb.ReceiptDate,
    pb.ExpirationDate,
    DATEDIFF(pb.ExpirationDate, CURDATE()) AS DaysLeft,
    pb.Quantity,
    pb.Status,
    w.Name AS Warehouse,
    s.CompanyName AS Supplier
FROM ProductBatch pb
JOIN Product p ON pb.ProductCode = p.ProductCode
JOIN Warehouse w ON pb.WarehouseCode = w.WarehouseCode
JOIN Supplier s ON pb.SupplierCode = s.SupplierCode
ORDER BY pb.ExpirationDate ASC;