Changes between Initial Version and Version 1 of AdvancedReport10


Ignore:
Timestamp:
08/21/26 06:13:28 (29 hours ago)
Author:
235018
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReport10

    v1 v1  
     1= Clients ordered by number of orders
     2{{{#!sql
     3CREATE OR REPLACE FUNCTION get_clients_by_number_of_orders()
     4RETURNS TABLE (
     5    client_id INT,
     6    client_name TEXT,
     7    number_of_orders BIGINT
     8)
     9LANGUAGE plpgsql
     10AS $$
     11BEGIN
     12    RETURN QUERY
     13    SELECT
     14        c.client_id,
     15        c.name AS client_name,
     16        COUNT(DISTINCT o.order_num) AS number_of_orders
     17    FROM client c
     18    JOIN makes_order mo
     19        ON c.client_id = mo.client_id
     20    JOIN "order" o
     21        ON mo.order_num = o.order_num
     22    GROUP BY
     23        c.client_id,
     24        c.name
     25    ORDER BY
     26        number_of_orders DESC;
     27END;
     28$$;
     29
     30}}}
     31
     32== Relational Algebra
     33- O(order_num, quantity, status, last_modified_date, payment_method, discount)
     34- C(client_id, name, first_name, last_name, email, password, delivery_address)
     35- MO(client_id, order_num)
     36
     37
     38**JOIN clients with their orders:**
     39- J1 ← C ⨝C.client_id = MO.client_id MO
     40- J2 ← J1 ⨝MO.order_num = O.order_num O
     41
     42**Calculate number of distinct orders for each lient:**
     43- R ← γclient_id, name;
     44     COUNT(DISTINCT order_num) → number_of_orders
     45     (J2)
     46
     47**Sort by total numebr of orders:**
     48- R_final ← τnumber_of_orders DESC(R)
     49
     50