| | 35 | '''Релациона алгебра:''' |
| | 36 | {{{ |
| | 37 | ProductRevenue ← γ name; SUM(quantity × unit_price_at_sale) → total_revenue (product ⨝ product_id sale_item) |
| | 38 | |
| | 39 | RevenueCalculations ← π product_name, total_revenue, |
| | 40 | (RunningSum(total_revenue) / TotalSum(total_revenue)) → cumulative_share |
| | 41 | (τ total_revenue DESC (ProductRevenue)) |
| | 42 | |
| | 43 | Result ← π product_name, |
| | 44 | ROUND(total_revenue, 2) → revenue_mkd, |
| | 45 | CASE(cumulative_share ≤ 0.80 → 'A', |
| | 46 | cumulative_share ≤ 0.95 → 'B', |
| | 47 | ELSE → 'C') → abc_classification |
| | 48 | (RevenueCalculations) |
| | 49 | }}} |
| | 50 | |
| | 108 | '''Релациона алгебра:''' |
| | 109 | {{{ |
| | 110 | Temp1 ← product ⨝ product_id=product_id warehouse_stock |
| | 111 | |
| | 112 | Temp2 ← Temp1 ⨝ warehouse_id=warehouse_id warehouse |
| | 113 | |
| | 114 | Result ← π product.name → product_name, |
| | 115 | warehouse.name → warehouse_location, |
| | 116 | quantity_on_hand, |
| | 117 | reorder_level, |
| | 118 | CASE(quantity_on_hand ≤ reorder_level → 'CRITICAL: REORDER', |
| | 119 | quantity_on_hand ≤ reorder_level × 1.5 → 'WARNING: LOW', |
| | 120 | ELSE → 'HEALTHY') → stock_status |
| | 121 | (Temp2) |
| | 122 | }}} |
| | 123 | |
| | 175 | '''Релациона алгебра:''' |
| | 176 | {{{ |
| | 177 | Temp1 ← customer ⨝ customer_id=customer_id sale |
| | 178 | |
| | 179 | Result ← γ customer_id, name → customer_name; |
| | 180 | EXTRACT(DAY FROM CURRENT_TIMESTAMP - MAX(date_time)) → recency_days, |
| | 181 | COUNT(sale_id) → frequency_count, |
| | 182 | SUM(total_amount) → monetary_total, |
| | 183 | NTILE(5, MAX(date_time)) → r_score, |
| | 184 | NTILE(5, COUNT(sale_id)) → f_score, |
| | 185 | NTILE(5, SUM(total_amount)) → m_score |
| | 186 | (Temp1) |
| | 187 | }}} |
| | 188 | |
| | 236 | '''Релациона алгебра:''' |
| | 237 | {{{ |
| | 238 | Temp1 ← product ⨝ product_id=product_id warehouse_stock |
| | 239 | |
| | 240 | Temp2 ← Temp1 ⟕ product_id=product_id sale_item |
| | 241 | |
| | 242 | Temp3 ← Temp2 ⟕ sale_id=sale_id sale |
| | 243 | |
| | 244 | Temp4 ← γ product_id, name, sku, quantity_on_hand; |
| | 245 | MAX(date_time) → last_sold_date (Temp3) |
| | 246 | |
| | 247 | Result ← π name → product_name, sku, quantity_on_hand, |
| | 248 | COALESCE(last_sold_date::TEXT, 'NO SALES RECORDED') → last_sold_date |
| | 249 | (σ last_sold_date < CURRENT_DATE - 90 ∨ last_sold_date IS NULL (Temp4)) |
| | 250 | }}} |
| | 251 | |
| | 275 | '''Релациона алгебра:''' |
| | 276 | {{{ |
| | 277 | ProductCosts ← γ product_id; AVG(unit_cost) → average_cost (purchase_order_item) |
| | 278 | |
| | 279 | Temp1 ← category ⨝ category_id=category_id product |
| | 280 | |
| | 281 | Temp2 ← Temp1 ⨝ product_id=product_id sale_item |
| | 282 | |
| | 283 | Temp3 ← Temp2 ⨝ product_id=product_id ProductCosts |
| | 284 | |
| | 285 | Result ← γ category.name → category_name; |
| | 286 | SUM(quantity × unit_price_at_sale) → gross_revenue, |
| | 287 | SUM(quantity × average_cost) → total_cost_of_goods, |
| | 288 | ROUND(((SUM(quantity × unit_price_at_sale) - SUM(quantity × average_cost)) / |
| | 289 | NULLIF(SUM(quantity × unit_price_at_sale), 0)) × 100, 2) → profit_margin_pct |
| | 290 | (Temp3) |
| | 291 | }}} |
| | 292 | |
| | 311 | }}} |
| | 312 | |
| | 313 | '''Релациона алгебра:''' |
| | 314 | {{{ |
| | 315 | Temp1 ← ρ si1 (sale_item) |
| | 316 | |
| | 317 | Temp2 ← ρ si2 (sale_item) |
| | 318 | |
| | 319 | Temp3 ← σ si1.sale_id = si2.sale_id ∧ si1.product_id < si2.product_id (Temp1 × Temp2) |
| | 320 | |
| | 321 | Temp4 ← Temp3 ⨝ si1.product_id = p1.product_id (ρ p1 (product)) |
| | 322 | |
| | 323 | Temp5 ← Temp4 ⨝ si2.product_id = p2.product_id (ρ p2 (product)) |
| | 324 | |
| | 325 | Temp6 ← γ p1.name → product_a, p2.name → product_b; |
| | 326 | COUNT(*) → pair_occurrence_count (Temp5) |
| | 327 | |
| | 328 | Result ← δ 10 (τ pair_occurrence_count DESC (Temp6)) |
| 217 | | ---- |
| | 350 | '''Релациона алгебра:''' |
| | 351 | {{{ |
| | 352 | LatestCost(product_id) ← π product_id, unit_cost |
| | 353 | (δ 1 (τ po_id DESC (purchase_order_item))) |
| | 354 | |
| | 355 | Temp1 ← warehouse ⨝ warehouse_id=warehouse_id warehouse_stock |
| | 356 | |
| | 357 | Temp2 ← Temp1 ⨝ product_id=product_id LatestCost |
| | 358 | |
| | 359 | Result ← γ warehouse.name → warehouse_location; |
| | 360 | SUM(quantity_on_hand × unit_cost) → total_inventory_valuation_mkd |
| | 361 | (Temp2) |
| | 362 | }}} |
| | 363 | |
| | 364 | ---- |
| | 365 | |
| | 366 | '''Символи и операции:''' |
| | 367 | * π - проекција (SELECT) |
| | 368 | * σ - селекција (WHERE) |
| | 369 | * ⨝ - природен спој (JOIN) |
| | 370 | * ⟕ - left outer join (LEFT JOIN) |
| | 371 | * × - Декартов производ (CROSS JOIN) |
| | 372 | * γ - групирање (GROUP BY) |
| | 373 | * τ - сортирање (ORDER BY) |
| | 374 | * δ - лимит (LIMIT) |
| | 375 | * ρ - преименување (AS / alias) |
| | 376 | * ∧ - логичко И (AND) |
| | 377 | * ∨ - логичко ИЛИ (OR) |