= Напредна тема За напредна тема е избрано да се направи Data Cube мултидимензионална структура (аналитика) за записи на курсеви и промет. Структурата има 5 димензии: месец, тежина на курс, тип на запис за курс, големина на компанија каде работи корисникот, и метод на плаќање). Тоа се вкупно $2^5 = 32$ кубоиди (кардиналност/лице на data cube-от). За секој кубоит имаме 5 метрики: број на записи, бруто промет, попусти дадено, нето промет, просечна цена по купување. {{{ CREATE MATERIALIZED VIEW mv_enrollment_revenue_cube AS SELECT date_trunc('month', p.date) AS month, c.difficulty AS course_difficulty, e.enrollment_type AS enrollment_type, u.company_size AS user_company_size, p.method AS payment_method, COUNT(e.id) AS enrollment_count, SUM(od.price) AS gross_revenue, SUM(od.discount_amount) AS total_discounts, SUM(od.price - od.discount_amount) AS net_revenue, AVG(od.price) AS avg_order_value FROM enrollment e JOIN course_version cv ON cv.id = e.course_version_id JOIN course c ON c.id = cv.course_id JOIN _user u ON u.id = e.user_id LEFT JOIN order_details od ON od.enrollment_id = e.id LEFT JOIN _order o ON o.id = od.order_id LEFT JOIN payment p ON p.order_id = o.id WHERE e.enrollment_status != 'CANCELED' and e.enrollment_status != 'PENDING' GROUP BY CUBE ( date_trunc('month', p.date), -- MONTH c.difficulty, -- ENUM ('BEGINNER', 'INTERMEDIATE', 'ADVANCED', 'EXPERT') e.enrollment_type, -- ENUM ('BUNDLE', 'INDIVIDUAL', 'LEARNING_PATH') u.company_size, -- ENUM ('FREELANCE', 'MICRO', 'SMALL', 'MEDIUM', 'MID_MARKET', 'ENTERPRISE', 'OTHER') p.method -- ENUM ('CARD', 'PAYPAL', 'CASYS') ); }}}