| Version 4 (modified by , 8 days ago) ( diff ) |
|---|
Напредна тема
За напредна тема е избрано да се направи Data Cube мултидимензионална структура (аналитика) за записи на курсеви и промет. Структурата има 5 димензии: месец, тежина на курс, тип на запис за курс, големина на компанија каде работи корисникот, и метод на плаќање). Тоа се вкупно $25 = 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')
);
Note:
See TracWiki
for help on using the wiki.
