Changes between Version 5 and Version 6 of P4


Ignore:
Timestamp:
01/27/24 14:28:09 (5 months ago)
Author:
216091
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • P4

    v5 v6  
    11=== Извештај за проверка на профит од продажба за претходната година со детали за книги и клиенти:
    22{{{#!sql
     3WITH PreviousYearSales AS (
     4    SELECT
     5        B.Title AS BookTitle,
     6        C.FirstName || ' ' || C.LastName AS CustomerName,
     7        O.TotalAmount AS SaleAmount,
     8        EXTRACT(YEAR FROM O.OrderDate) AS OrderYear
     9    FROM
     10        Book B
     11    JOIN
     12        OrderTable O ON B.BookID = O.OrderID
     13    JOIN
     14        CustomerOrder CO ON O.OrderID = CO.OrderID
     15    JOIN
     16        Customer C ON CO.CustomerID = C.CustomerID
     17    WHERE
     18        EXTRACT(YEAR FROM O.OrderDate) = EXTRACT(YEAR FROM CURRENT_DATE) - 1
     19)
    320SELECT
    4     B.Title AS BookTitle,
     21    BookTitle,
     22    CustomerName,
     23    SUM(SaleAmount) AS TotalProfit
     24FROM
     25    PreviousYearSales
     26GROUP BY
     27    BookTitle, CustomerName
     28ORDER BY
     29    TotalProfit DESC;
     30
     31}}}
     32
     33=== Извештај за проверка на профит од продажба за последните две години со анализа на трендови:
     34{{{#!sql
     35WITH TwoYearsSales AS (
     36    SELECT
     37        B.Title AS BookTitle,
     38        O.TotalAmount AS SaleAmount,
     39        EXTRACT(YEAR FROM O.OrderDate) AS OrderYear
     40    FROM
     41        Book B
     42    JOIN
     43        OrderTable O ON B.BookID = O.OrderID
     44    WHERE
     45        EXTRACT(YEAR FROM O.OrderDate) >= EXTRACT(YEAR FROM CURRENT_DATE) - 2
     46)
     47SELECT
     48    BookTitle,
     49    OrderYear,
     50    SaleAmount,
     51    LAG(SaleAmount) OVER (PARTITION BY BookTitle ORDER BY OrderYear) AS PreviousYearSaleAmount,
     52    COALESCE((SaleAmount - LAG(SaleAmount) OVER (PARTITION BY BookTitle ORDER BY OrderYear)), SaleAmount) AS SaleChange
     53FROM
     54    TwoYearsSales
     55ORDER BY
     56    BookTitle, OrderYear;
     57}}}
     58=== Извештај за најпродавана книга по година со детали за жанрови и издавачи:
     59{{{#!sql
     60WITH BookDetails AS (
     61    SELECT
     62        B.Title AS BookTitle,
     63        G.GenreName,
     64        P.PublisherName,
     65        EXTRACT(YEAR FROM O.OrderDate) AS OrderYear,
     66        SUM(O.TotalAmount) AS TotalProfit
     67    FROM
     68        Book B
     69    JOIN
     70        OrderTable O ON B.BookID = O.OrderID
     71    JOIN
     72        BookGenre BG ON B.BookID = BG.BookID
     73    JOIN
     74        Genre G ON BG.GenreID = G.GenreID
     75    JOIN
     76        BookPublisher BP ON B.BookID = BP.BookID
     77    JOIN
     78        Publisher P ON BP.PublisherID = P.PublisherID
     79    GROUP BY
     80        BookTitle, GenreName, PublisherName, OrderYear
     81)
     82SELECT
     83    BookTitle,
     84    GenreName,
     85    PublisherName,
     86    OrderYear,
     87    TotalProfit
     88FROM
     89    BookDetails
     90ORDER BY
     91    OrderYear, TotalProfit DESC;
     92}}}
     93=== Извештај за најголеми профити за секоја година со детали за најпродавани автори:
     94{{{#!sql
     95WITH YearlyMaxProfits AS (
     96    SELECT
     97        EXTRACT(YEAR FROM O.OrderDate) AS OrderYear,
     98        MAX(SUM(O.TotalAmount)) AS MaxTotalProfit
     99    FROM
     100        OrderTable O
     101    GROUP BY
     102        OrderYear
     103)
     104SELECT
     105    YMP.OrderYear,
     106    A.AuthorName,
    5107    SUM(O.TotalAmount) AS TotalProfit
    6108FROM
    7     Book B
     109    YearlyMaxProfits YMP
    8110JOIN
    9     OrderTable O ON B.BookID = O.OrderID
    10 WHERE
    11     EXTRACT(YEAR FROM O.OrderDate) = EXTRACT(YEAR FROM CURRENT_DATE) - 1
     111    OrderTable O ON EXTRACT(YEAR FROM O.OrderDate) = YMP.OrderYear
     112JOIN
     113    Book B ON O.OrderID = B.BookID
     114JOIN
     115    BookAuthor BA ON B.BookID = BA.BookID
     116JOIN
     117    Author A ON BA.AuthorID = A.AuthorID
    12118GROUP BY
    13     Betitled
     119    YMP.OrderYear, A.AuthorName
    14120ORDER BY
    15     TotalProfit DESC;
     121    YMP.OrderYear, TotalProfit DESC;
    16122}}}