== Извештај = Неделен,Месечен,Годишен извештај '''Weekly''' \\ Креираме прашалник каде велиме "за секој ден од неделата во последни 7 дена,\\ прикажи број нарачки и вкупен приход" : \\ Функцијата {{{Day(order_date)}}} претставена со '''релациска алгебра''' \\ со помош на {{{групирање (aggregation)}}} :\\ {{{#!sql γ_Day(order_date); count(*), sum(total_price) (σ_order_date ≥ (CURRENT_DATE - 7) (Orders)) }}} \\ \\ '''Monthly''' \\ Креираме прашалник каде велиме "за секој месец, преброј ги нарачките и пресметај вкупен приход" : \\ Функцијата {{{Month(order_date)}}} претставена со '''релациска алгебра''' \\ со помош на {{{групирање (aggregation)}}} :\\ {{{#!sql γ_Month(order_date); count(*), sum(total_price)(Orders) }}} \\ \\ '''Yearly''' \\ Креираме прашалник каде велиме "за секоја година, прикажи колку нарачки имало и колку приход е остварено" : \\ Функцијата {{{Year(order_date)}}} претставена со '''релациска алгебра''' \\ со помош на {{{групирање (aggregation)}}} :\\ {{{#!sql γ_Year(order_date); count(*), sum(total_price)(Orders) }}} \\ \\ = Најпродавани продукти,Топ клиенти,Нови регистрации по месец '''Најпродавани продукти''' \\ Креираме прашалник каде велиме "за секој продукт, пресметај колку вкупно парчиња се продадени \\ (збир на quantity), сортирај ги и земи ги првите 5" : \\ Функцијата {{{top_products}}} претставена со '''релациска алгебра''' каде што имаме \\ ⨝ врска : {{{JOIN}}} меѓу {{{contains}}}, {{{stock}}}, {{{products}}} \\ π врска : проекција на колоните што се враќаат {{{label}}} и {{{total_sold}}} \\ γ врска : групирање по име на продукт, собирање на количини \\ ρ врска : преименување во {{{label}}} \\ τ_desc(...) врска : сортирање опаѓачки \\ \\ {{{#!sql π_label, total_sold ( τ_desc(total_sold) ( ρ(label ← p.product_name)( γ_p.product_name; SUM(c.quantity) → total_sold ( (Contains ⨝ Stock ⨝ Products) ) ) ) ) }}} \\ \\ '''Топ клиенти''' \\ Креираме прашалник каде велиме "да се пресмета колку трошел секој клиент вкупно,\\ и да се сортира според таа сума,на крај да ги врати ги првите 5" : \\ Функцијата {{{top_clients}}} претставена со релациска алгебра, каде што имаме: \\ ⨝ врска : {{{JOIN}}} меѓу {{{orders}}} и {{{customers}}} \\ γ врска : групирање по {{{first_name}}} и {{{last_name}}} и собирање на {{{SUM(total_price)}}} \\ ρ врска : преименување на комбинацијата {{{first_name || ' ' || last_name}}} во {{{label}}} \\ π врска : проекција на колоните {{{label}}} и {{{total_spent}}} \\ τ_desc(...) врска : сортирање по {{{total_spent}}} во опаѓачки редослед \\ LIMIT 5 : се применува како пост-процес за враќање на првите 5 записи \\ \\ {{{#!sql π_label, total_spent ( τ_desc(total_spent) ( ρ(label ← concat(c.first_name, ' ', c.last_name)) ( γ_c.first_name, c.last_name; SUM(o.total_price) → total_spent ( Orders ⨝ Customers ) ) ) ) }}} \\ \\ '''Нови регистрации по месец''' \\ Креираме прашалник каде велиме "за секој месец, прикажи колку нови корисници се регистрирале" : \\ Функцијата {{{new_users}}} претставена со релациска алгебра, каде што имаме: \\ γ врска : групирање по {{{TO_CHAR(created_at, 'Mon YYYY')}}} \\ ρ врска : преименување на изразот {{{TO_CHAR(...)}}} во {{{label}}} \\ π врска : проекција на колоните {{{label}}} и {{{new_users}}} \\ τ(...) врска : сортирање според {{{MIN(created_at)}}} порастечки (од најстаро кон најново) \\ \\ {{{#!sql γ_MonthYear(created_at); COUNT(*) → new_users (Customers) или π_label, new_users ( ρ(label ← TO_CHAR(created_at, 'Mon YYYY')) ( γ_label; COUNT(*) → new_users (Customers) ) ) }}} \\ \\