DatabaseProgramming: Customer subscription summary.sql

File Customer subscription summary.sql, 943 bytes (added by 231094, 3 weeks ago)
Line 
1CREATE OR REPLACE FUNCTION fn_get_customer_subscription_summary(
2 p_customer_id BIGINT
3)
4RETURNS TEXT
5LANGUAGE plpgsql
6AS $$
7DECLARE
8 v_active_count INT;
9 v_suspended_count INT;
10 v_monthly_fee NUMERIC;
11BEGIN
12 SELECT
13 COUNT(*) FILTER (WHERE s.status = 'active'),
14 COUNT(*) FILTER (WHERE s.status = 'suspended'),
15 COALESCE(SUM(p.monthly_fee) FILTER (WHERE s.status = 'active'), 0)
16 INTO
17 v_active_count,
18 v_suspended_count,
19 v_monthly_fee
20 FROM accounts a
21 JOIN subscriptions s
22 ON s.account_id = a.account_id
23 JOIN plans p
24 ON p.plan_id = s.plan_id
25 WHERE a.customer_id = p_customer_id;
26
27 RETURN
28 'Active subscriptions: ' || v_active_count ||
29 ', Suspended subscriptions: ' || v_suspended_count ||
30 ', Active monthly fee: ' || v_monthly_fee;
31END;
32$$;
33
34SELECT fn_get_customer_subscription_summary(1);