Changes between Initial Version and Version 1 of AdvancedReport7


Ignore:
Timestamp:
09/24/26 02:08:45 (7 days ago)
Author:
201178
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport7

    v1 v1  
     1= Месечни приходи и расходи =
     2
     3== Опис ==
     4
     5Извештајот ги прикажува вкупните приходи по месеци, заедно со бројот на нарачки, просечната плаќања и бројот на активни келнери.
     6
     7== SQL решение ==
     8
     9{{{
     10CREATE OR REPLACE FUNCTION get_monthly_revenue()
     11RETURNS TABLE (
     12    month TEXT,
     13    order_count BIGINT,
     14    total_revenue NUMERIC,
     15    avg_payment NUMERIC,
     16    tables_used BIGINT,
     17    waiters_active BIGINT
     18)
     19LANGUAGE plpgsql
     20AS $$
     21BEGIN
     22    RETURN QUERY
     23    SELECT
     24        TO_CHAR(p.payment_date, 'YYYY-MM')::TEXT AS month,
     25        COUNT(DISTINCT o.order_id) AS order_count,
     26        SUM(p.amount) AS total_revenue,
     27        ROUND(AVG(p.amount), 2) AS avg_payment,
     28        COUNT(DISTINCT o.table_id) AS tables_used,
     29        COUNT(DISTINCT o.user_id) AS waiters_active
     30    FROM project.payment p
     31    JOIN project.orders o ON o.order_id = p.order_id
     32    WHERE o.status = 'ПЛАТЕНА'
     33    GROUP BY TO_CHAR(p.payment_date, 'YYYY-MM')
     34    ORDER BY month DESC;
     35END;
     36$$;
     37}}}
     38
     39== Релациона алгебра ==
     40
     41{{{
     42P(payment_id, order_id, amount, payment_date)
     43O(order_id, table_id, user_id, status)
     44
     45J1 ← P ⨝ P.order_id = O.order_id O
     46
     47F1 ← σ status='ПЛАТЕНА' (J1)
     48
     49G ← γ month;
     50     COUNT(DISTINCT order_id) → order_count,
     51     SUM(amount) → total_revenue,
     52     AVG(amount) → avg_payment,
     53     COUNT(DISTINCT table_id) → tables_used,
     54     COUNT(DISTINCT user_id) → waiters_active (F1)
     55
     56R ← π month, order_count, total_revenue, avg_payment, tables_used, waiters_active (G)
     57
     58R_final ← τ month DESC (R)
     59}}}