Changes between Version 3 and Version 4 of AdvancedReports2


Ignore:
Timestamp:
04/29/25 13:00:20 (12 days ago)
Author:
175012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports2

    v3 v4  
    3939=== Извештај 2: Приходи од полиси по тип и број на клиенти ===
    4040
    41 Овој извештај ги прикажува приходите генерирани од полиси поделени по тип на пакет и го вклучува бројот на клиенти кои го користат секој тип на пакет за секој месец посебно.
     41Овој прашалник прикажува годишен извештај по тип на полиси. За секоја година и секој тип на полиса (Автомобилска, Патничка, Имотна)
    4242
    4343{{{#!sql
    4444
     45WITH policy_type_map AS (
     46    SELECT
     47        p.p_id,
     48        EXTRACT(YEAR FROM p.sdate) AS policy_year,
     49        CASE
     50            WHEN ap.a_id IS NOT NULL THEN 'Auto'
     51            WHEN tp.tr_id IS NOT NULL THEN 'Travel'
     52            WHEN pp.pr_id IS NOT NULL THEN 'Property'
     53            ELSE 'Other'
     54        END AS policy_type,
     55        pkg.total AS insured_value
     56    FROM
     57        project.Policy p
     58    LEFT JOIN project.auto_pol ap ON p.p_id = ap.pol_id
     59    LEFT JOIN project.Travel_pol tp ON p.p_id = tp.pol_id
     60    LEFT JOIN project.Property_pol pp ON p.p_id = pp.pol_id
     61    LEFT JOIN project.Package pkg ON p.package = pkg.code
     62),
     63payments_per_policy AS (
     64    SELECT
     65        policy,
     66        SUM(p_amount) AS total_payment
     67    FROM project.Payment
     68    GROUP BY policy
     69),
     70combined AS (
     71    SELECT
     72        ptm.policy_year,
     73        ptm.policy_type,
     74        ptm.p_id,
     75        ptm.insured_value,
     76        COALESCE(pp.total_payment, 0) AS payment
     77    FROM policy_type_map ptm
     78    LEFT JOIN payments_per_policy pp ON ptm.p_id = pp.policy
     79),
     80final_aggregation AS (
     81    SELECT
     82        policy_year,
     83        policy_type,
     84        COUNT(p_id) AS total_policies,
     85        SUM(insured_value) AS total_insured_value,
     86        SUM(payment) AS total_revenue,
     87        ROUND(AVG(payment), 2) AS avg_revenue_per_policy
     88    FROM combined
     89    GROUP BY policy_year, policy_type
     90)
    4591SELECT
    46     DATE_TRUNC('month', pay.p_date) AS Payment_Month,
    47     pkg.title AS Package_Title,
    48     pkg.type_pol AS Policy_Type,
    49     COUNT(pay.payment_num) AS Total_Payments,
    50     SUM(pay.p_amount) AS Total_Revenue,
    51     AVG(pay.p_amount) AS Average_Payment
    52 FROM
    53     project.Package pkg
    54 JOIN
    55     project.Policy p ON pkg.code = p.package
    56 JOIN
    57     project.Payment pay ON p.p_id = pay.policy
    58 GROUP BY
    59     Payment_Month, pkg.title, pkg.type_pol
    60 ORDER BY
    61     Payment_Month DESC, Total_Revenue DESC;
    62 
     92    policy_year,
     93    policy_type,
     94    total_policies,
     95    total_insured_value,
     96    total_revenue,
     97    avg_revenue_per_policy
     98FROM final_aggregation
     99ORDER BY policy_year DESC, policy_type;
    63100
    64101