Version 15 (modified by 11 days ago) ( diff ) | ,
---|
Извештај
Неделен,Месечен,Годишен извештај
Weekly
Креираме прашалник каде велиме "за секој ден од неделата во последни 7 дена,
прикажи број нарачки и вкупен приход" :
Функцијата Day(order_date)
претставена со релациска алгебра
со помош на групирање (aggregation)
:
γ_Day(order_date); count(*), sum(total_price) (σ_order_date ≥ (CURRENT_DATE - 7) (Orders))
Monthly
Креираме прашалник каде велиме "за секој месец, преброј ги нарачките и пресметај вкупен приход" :
Функцијата Month(order_date)
претставена со релациска алгебра
со помош на групирање (aggregation)
:
γ_Month(order_date); count(*), sum(total_price)(Orders)
Yearly
Креираме прашалник каде велиме "за секоја година, прикажи колку нарачки имало и колку приход е остварено" :
Функцијата Year(order_date)
претставена со релациска алгебра
со помош на групирање (aggregation)
:
γ_Year(order_date); count(*), sum(total_price)(Orders)
Најпродавани продукти,Топ клиенти,Нови регистрации по месец
Најпродавани продукти
Креираме прашалник каде велиме "за секој продукт, пресметај колку вкупно парчиња се продадени
(збир на quantity), сортирај ги и земи ги првите 5" :
Функцијата top_products
претставена со релациска алгебра каде што имаме
⨝ врска : JOIN
меѓу contains
, stock
, products
π врска : проекција на колоните што се враќаат label
и total_sold
γ врска : групирање по име на продукт, собирање на количини
ρ врска : преименување во label
τ_desc(...) врска : сортирање опаѓачки
π_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 записи
π_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)
порастечки (од најстаро кон најново)
γ_MonthYear(created_at); COUNT(*) → new_users (Customers) или π_label, new_users ( ρ(label ← TO_CHAR(created_at, 'Mon YYYY')) ( γ_label; COUNT(*) → new_users (Customers) ) )
Предикција на производи кои наскоро ќе ги снема на залиха
Креираме прашалник каде велиме "за секој продукт и големина,
прикажи моментална залиха, просечна неделна продажба во последни 4 недели, и статус според таа продажба."
Функцијата stock_prediction
е претставена со релациска алгебра, каде што имаме:
σ врска : селектирање на нарачки во последни 4 недели
γ врска : групирање по id_product
и id_size
, пресметка на просечна неделна продажба.
⨝ врска : поврзување на Products
, Stock
, Sizes
, и Contains
.
⟕ врска : лева надворешна врска со продажбата (бидејки не сите продукти имаат продажба).
γ врска : групирање по product_name
и size_label
, и пресметка.
ρ врска : преименување на product_name
→ label}}}
π врска : проекција на колоните label
, size
, current_stock
, avg_weekly_sales
, status
τ(...) врска : сортирање прво според status опаѓачки (ИТНО > Набљудувај > Стабилно),
а потоа по avg_weekly_sales
опаѓачки.
Result ← τ_status↓, avg_weekly_sales↓ ( π_product_name, size_label, current_stock, avg_weekly_sales, status ( γ_product_name, size_label; SUM(quantity) → current_stock, AVG(avg_weekly_sales) → avg_weekly_sales, IF(SUM(quantity) ≤ AVG(avg_weekly_sales), 'ИТНО', 'Набљудувај') → status ( (Products ⨝ Stock ⨝ Sizes) ⟕ WeeklyAvgSales ) ) )