Changes between Version 1 and Version 2 of AdvancedTopics-AdvDb


Ignore:
Timestamp:
06/07/26 18:43:34 (13 days ago)
Author:
231175
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedTopics-AdvDb

    v1 v2  
    1 = Напредни теми
     1= Напредна тема
     2
     3За напредна тема е избрано да се направи Data Cube мултидимензионална структура (аналитика) за записи на курсеви и промет.
     4Структурата има 5 димензии: месец, тежина на курс, тип на запис за курс, големина на компанија каде работи корисникот, и метод на плаќање). Тоа се вкупно 2^5 = 32 кубоиди (кардиналност/лице на data cube-от).
     5За секој кубоит имаме 5 метрики: број на записи, бруто промет, попусти дадено, нето промет, просечна цена по купување.
     6
     7{{{
     8CREATE MATERIALIZED VIEW mv_enrollment_revenue_cube AS
     9SELECT date_trunc('month', p.date)        AS month,
     10       c.difficulty                       AS course_difficulty,
     11       e.enrollment_type                  AS enrollment_type,
     12       u.company_size                     AS user_company_size,
     13       p.method                           AS payment_method,
     14       COUNT(e.id)                        AS enrollment_count,
     15       SUM(od.price)                      AS gross_revenue,
     16       SUM(od.discount_amount)            AS total_discounts,
     17       SUM(od.price - od.discount_amount) AS net_revenue,
     18       AVG(od.price)                      AS avg_order_value
     19FROM enrollment e
     20         JOIN course_version cv
     21              ON cv.id = e.course_version_id
     22         JOIN course c ON c.id = cv.course_id
     23         JOIN _user u ON u.id = e.user_id
     24         LEFT JOIN order_details od ON od.enrollment_id = e.id
     25         LEFT JOIN _order o ON o.id = od.order_id
     26         LEFT JOIN payment p ON p.order_id = o.id
     27WHERE e.enrollment_status != 'CANCELED'
     28  and e.enrollment_status != 'PENDING'
     29GROUP BY CUBE ( date_trunc('month', p.date), -- MONTH
     30                c.difficulty,                -- ENUM ('BEGINNER', 'INTERMEDIATE', 'ADVANCED', 'EXPERT')
     31                e.enrollment_type,           -- ENUM ('BUNDLE', 'INDIVIDUAL', 'LEARNING_PATH')
     32                u.company_size,              -- ENUM ('FREELANCE', 'MICRO', 'SMALL', 'MEDIUM', 'MID_MARKET', 'ENTERPRISE', 'OTHER')
     33                p.method                     -- ENUM ('CARD', 'PAYPAL', 'CASYS')
     34    );
     35}}}