Objective
Create a comprehensive media analytics system that tracks usage patterns, engagement metrics, storage costs, and performance indicators across all media types.
Step 1: Create Media Assets Summary Table
Store aggregated asset data.
CREATE TABLE media_assets_summary (
id INTEGER PRIMARY KEY,
asset_id VARCHAR(50) NOT NULL UNIQUE,
asset_type VARCHAR(50),
title VARCHAR(300),
category VARCHAR(100),
file_size_mb DECIMAL(10, 2),
duration_seconds INTEGER,
dimensions VARCHAR(50),
upload_date DATE,
owner_id VARCHAR(50),
department VARCHAR(100),
status VARCHAR(50) DEFAULT 'active'
);
Step 2: Create Daily Metrics Table
Track daily statistics.
CREATE TABLE daily_media_metrics (
id INTEGER PRIMARY KEY,
metric_date DATE NOT NULL,
asset_type VARCHAR(50),
category VARCHAR(100),
total_views INTEGER DEFAULT 0,
unique_viewers INTEGER DEFAULT 0,
total_downloads INTEGER DEFAULT 0,
total_shares INTEGER DEFAULT 0,
avg_engagement_seconds DECIMAL(10, 2),
total_storage_mb DECIMAL(15, 2),
new_assets_count INTEGER DEFAULT 0,
deleted_assets_count INTEGER DEFAULT 0
);
Step 3: Create Asset Engagement Table
Track individual asset performance.
CREATE TABLE asset_engagement (
id INTEGER PRIMARY KEY,
asset_id INTEGER NOT NULL,
engagement_date DATE,
views INTEGER DEFAULT 0,
unique_views INTEGER DEFAULT 0,
downloads INTEGER DEFAULT 0,
shares INTEGER DEFAULT 0,
avg_view_duration_seconds DECIMAL(10, 2),
completion_rate DECIMAL(5, 2),
likes INTEGER DEFAULT 0,
comments INTEGER DEFAULT 0,
FOREIGN KEY (asset_id) REFERENCES media_assets_summary(id)
);
Step 4: Create User Activity Table
Track user behavior.
CREATE TABLE user_media_activity (
id INTEGER PRIMARY KEY,
user_id VARCHAR(50),
activity_date DATE,
assets_viewed INTEGER DEFAULT 0,
total_view_time_seconds INTEGER DEFAULT 0,
assets_downloaded INTEGER DEFAULT 0,
assets_uploaded INTEGER DEFAULT 0,
assets_shared INTEGER DEFAULT 0,
storage_used_mb DECIMAL(10, 2)
);
Step 5: Create Storage Metrics Table
Track storage usage.
CREATE TABLE storage_metrics (
id INTEGER PRIMARY KEY,
metric_date DATE NOT NULL,
asset_type VARCHAR(50),
department VARCHAR(100),
total_files INTEGER,
total_size_mb DECIMAL(15, 2),
avg_file_size_mb DECIMAL(10, 2),
compressed_size_mb DECIMAL(15, 2),
cost_estimate DECIMAL(10, 2)
);
Step 6: Create Performance Metrics Table
Track system performance.
CREATE TABLE performance_metrics (
id INTEGER PRIMARY KEY,
metric_date DATE NOT NULL,
metric_hour INTEGER,
avg_load_time_ms INTEGER,
p95_load_time_ms INTEGER,
avg_processing_time_ms INTEGER,
error_count INTEGER DEFAULT 0,
success_rate DECIMAL(5, 2),
bandwidth_gb DECIMAL(10, 2),
concurrent_users INTEGER
);
Step 7: Insert Sample Assets
Add media inventory.
INSERT INTO media_assets_summary (id, asset_id, asset_type, title, category, file_size_mb, duration_seconds, dimensions, upload_date, owner_id, department, status) VALUES
(1, 'VID-001', 'video', 'Product Launch Keynote', 'corporate', 2850.5, 5400, '3840x2160', '2024-01-01', 'USR-001', 'Marketing', 'active'),
(2, 'VID-002', 'video', 'Training Module 1', 'training', 580.2, 1800, '1920x1080', '2024-01-05', 'USR-002', 'HR', 'active'),
(3, 'VID-003', 'video', 'Customer Testimonial', 'marketing', 420.8, 600, '1920x1080', '2024-01-10', 'USR-001', 'Marketing', 'active'),
(4, 'IMG-001', 'image', 'Product Hero Shot', 'product', 15.2, NULL, '4000x3000', '2024-01-02', 'USR-003', 'Design', 'active'),
(5, 'IMG-002', 'image', 'Team Photo 2024', 'corporate', 8.5, NULL, '5000x3333', '2024-01-08', 'USR-002', 'HR', 'active'),
(6, 'DOC-001', 'document', 'Annual Report 2023', 'finance', 12.8, NULL, NULL, '2024-01-15', 'USR-004', 'Finance', 'active'),
(7, 'AUD-001', 'audio', 'Podcast Episode 45', 'marketing', 52.4, 4200, NULL, '2024-01-12', 'USR-001', 'Marketing', 'active'),
(8, 'VID-004', 'video', 'Product Demo', 'product', 320.5, 900, '1920x1080', '2024-01-18', 'USR-003', 'Product', 'active'),
(9, 'IMG-003', 'image', 'Office Building', 'corporate', 6.2, NULL, '4000x2667', '2024-01-20', 'USR-002', 'HR', 'active'),
(10, 'DOC-002', 'document', 'Employee Handbook', 'hr', 5.5, NULL, NULL, '2024-01-22', 'USR-002', 'HR', 'active');
Step 8: Insert Daily Metrics
Add aggregated metrics.
INSERT INTO daily_media_metrics (id, metric_date, asset_type, category, total_views, unique_viewers, total_downloads, total_shares, avg_engagement_seconds, total_storage_mb, new_assets_count) VALUES
(1, '2024-01-25', 'video', 'corporate', 1250, 890, 145, 52, 1800, 3851.5, 2),
(2, '2024-01-25', 'video', 'training', 420, 380, 28, 12, 1200, 580.2, 0),
(3, '2024-01-25', 'video', 'marketing', 580, 450, 65, 38, 450, 741.3, 1),
(4, '2024-01-25', 'image', 'product', 2100, 1580, 520, 180, 45, 21.4, 0),
(5, '2024-01-25', 'image', 'corporate', 890, 620, 125, 42, 30, 14.7, 1),
(6, '2024-01-25', 'document', 'finance', 320, 280, 185, 25, 180, 12.8, 0),
(7, '2024-01-25', 'audio', 'marketing', 245, 210, 85, 32, 2100, 52.4, 0),
(8, '2024-01-24', 'video', 'corporate', 1180, 850, 138, 48, 1750, 3851.5, 1),
(9, '2024-01-24', 'video', 'training', 395, 360, 25, 10, 1150, 580.2, 0),
(10, '2024-01-24', 'image', 'product', 1980, 1490, 485, 165, 42, 21.4, 2);