wiki:AdvancedReports

Version 3 (modified by 213231, 10 hours ago) ( diff )

--

Напредни извештаи од базата (SQL и складирани процедури)

1.Вкупен приход по месец од купување и изнајмување

SELECT 
    DATE_FORMAT(p.ProcurementDate, '%Y-%m') AS Mesec,
    SUM(COALESCE(t.TotalPrice, t.MonthlyPay * t.Duration)) AS VkupenPrihod
FROM 
    Procurement p
JOIN 
    T_Type t ON p.TransactionID = t.TransactionID
GROUP BY 
    Mesec
ORDER BY 
    Mesec DESC;

2.Најактивни клиенти според број на трансакции

SELECT 
    c.CustomerName, c.CustomerSurName,
    COUNT(p.TransactionID) AS VkupnoTransakcii
FROM 
    Customer c
JOIN 
    Procurement p ON c.CustomerID = p.CustomerID
GROUP BY 
    c.CustomerID
ORDER BY 
    VkupnoTransakcii DESC;

3.Најчесто сервисирани производи (камиони/приколки)

SELECT 
    pr.Model,
    COUNT(m.MainID) AS BrojNaServisi
FROM 
    Maintenance m
JOIN 
    Product pr ON m.ProductID = pr.ProductID
GROUP BY 
    pr.ProductID
ORDER BY 
    BrojNaServisi DESC;

4.Приход по тип на трансакција

SELECT 
    t.Type,
    SUM(CASE 
            WHEN t.Type = 'Buy' THEN t.TotalPrice
            WHEN t.Type = 'Rent' THEN t.MonthlyPay * t.Duration
         END) AS VkupenPrihod
FROM 
    T_Type t
GROUP BY 
    t.Type;

5.Производи со најдобри оценки од корисници

SELECT 
    pr.Model,
    AVG(f.Rating) AS ProsecnaOcena,
    COUNT(f.FeedbackID) AS BrojNaOceni
FROM 
    CustomerFeedback f
JOIN 
    Product pr ON f.ProductID = pr.ProductID
GROUP BY 
    f.ProductID
ORDER BY 
    ProsecnaOcena DESC, BrojNaOceni DESC;

6. Највредни производи (цени)

SELECT 
    Model, Price, Status
FROM 
    Product
ORDER BY 
    Price DESC;

7.Месечен извештај по типови трансакции и вкупен приход

SELECT 
    DATE_FORMAT(p.ProcurementDate, '%Y-%m') AS Month_Year,
    COUNT(p.TransactionID) AS Total_Transactions,
    COUNT(CASE WHEN t.Type = 'Rent' THEN 1 END) AS Rent_Transactions,
    COUNT(CASE WHEN t.Type = 'Buy' THEN 1 END) AS Buy_Transactions,
    SUM(CASE WHEN t.Type = 'Rent' THEN t.MonthlyPay * t.Duration ELSE 0 END) AS Rent_Revenue,
    SUM(CASE WHEN t.Type = 'Buy' THEN t.TotalPrice ELSE 0 END) AS Buy_Revenue,
    COUNT(DISTINCT m.MainID) AS Maintenance_Count,
    ROUND(AVG(f.Rating), 2) AS Avg_Feedback_Rating
FROM 
    Procurement p
LEFT JOIN 
    T_Type t ON p.TransactionID = t.TransactionID
LEFT JOIN 
    Maintenance m ON p.ProductID = m.ProductID 
                 AND DATE_FORMAT(p.ProcurementDate, '%Y-%m') = DATE_FORMAT(m.MainDate, '%Y-%m')
LEFT JOIN 
    CustomerFeedback f ON p.TransactionID = f.TransactionID
GROUP BY 
    Month_Year
ORDER BY 
    Month_Year DESC;
Note: See TracWiki for help on using the wiki.