Changes between Initial Version and Version 1 of AdvancedReport8


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

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport8

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