Skip to content

SynapCores / Recipe

Video Duration Query

Query and analyze video content by duration for content planning and scheduling

All recipes· video-streaming· 8 minutesbeginner
Instance: localhost:8080

Opens your running SynapCores (Video Duration Query will be staged for a preview — nothing runs until you click Run). No instance yet? Install free in ~30s.

Share

Objective

Learn to query and analyze videos by duration. This enables content planning, scheduling optimization, and understanding content length distribution.

Step 1: Create Video Content Table

Create a table for videos with duration tracking.

CREATE TABLE video_content (
    id INTEGER PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    video_file VIDEO(MP4),
    category VARCHAR(50),
    duration_seconds INTEGER NOT NULL,
    content_type VARCHAR(50),
    creator VARCHAR(100),
    is_published BOOLEAN DEFAULT FALSE,
    publish_date DATE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Step 2: Insert Sample Videos

Add videos with various durations.

INSERT INTO video_content (id, title, category, duration_seconds, content_type, creator, is_published, publish_date) VALUES
    (1, 'Quick Tip: Keyboard Shortcuts', 'tips', 45, 'short', 'tips_team', TRUE, '2024-01-10'),
    (2, 'Product Feature Overview', 'product', 180, 'standard', 'product_team', TRUE, '2024-01-12'),
    (3, 'Getting Started Guide', 'tutorial', 600, 'tutorial', 'education', TRUE, '2024-01-15'),
    (4, 'Deep Dive: Architecture', 'technical', 2700, 'long-form', 'engineering', TRUE, '2024-01-18'),
    (5, 'Quick Tip: Search Functions', 'tips', 60, 'short', 'tips_team', TRUE, '2024-01-20'),
    (6, 'Webinar: Best Practices', 'webinar', 3600, 'long-form', 'training', TRUE, '2024-01-22'),
    (7, 'Feature Demo: Reports', 'product', 300, 'standard', 'product_team', TRUE, '2024-01-25'),
    (8, 'Interview: Customer Success', 'testimonial', 900, 'interview', 'marketing', TRUE, '2024-01-28'),
    (9, 'Conference Keynote', 'event', 5400, 'long-form', 'executive', TRUE, '2024-02-01'),
    (10, 'Quick Tip: Data Export', 'tips', 90, 'short', 'tips_team', FALSE, NULL),
    (11, 'Tutorial: Advanced Queries', 'tutorial', 1200, 'tutorial', 'education', TRUE, '2024-02-05'),
    (12, 'Product Update February', 'product', 420, 'standard', 'product_team', TRUE, '2024-02-08');

Step 3: Format Duration Display

Query videos with formatted duration.

SELECT
    title,
    duration_seconds,
    duration_seconds / 60 as minutes,
    duration_seconds % 60 as remaining_seconds,
    category
FROM video_content
ORDER BY duration_seconds DESC;

Step 4: Duration Categories

Classify videos by length.

SELECT
    title,
    duration_seconds,
    CASE
        WHEN duration_seconds < 120 THEN 'Short (< 2 min)'
        WHEN duration_seconds < 600 THEN 'Medium (2-10 min)'
        WHEN duration_seconds < 1800 THEN 'Standard (10-30 min)'
        WHEN duration_seconds < 3600 THEN 'Long (30-60 min)'
        ELSE 'Extended (> 1 hour)'
    END as duration_category
FROM video_content
ORDER BY duration_seconds;

Step 5: Count by Duration Range

Count videos in each duration range.

SELECT
    CASE
        WHEN duration_seconds < 120 THEN 'Short (< 2 min)'
        WHEN duration_seconds < 600 THEN 'Medium (2-10 min)'
        WHEN duration_seconds < 1800 THEN 'Standard (10-30 min)'
        WHEN duration_seconds < 3600 THEN 'Long (30-60 min)'
        ELSE 'Extended (> 1 hour)'
    END as duration_range,
    COUNT(*) as video_count,
    SUM(duration_seconds) / 60 as total_minutes
FROM video_content
GROUP BY
    CASE
        WHEN duration_seconds < 120 THEN 'Short (< 2 min)'
        WHEN duration_seconds < 600 THEN 'Medium (2-10 min)'
        WHEN duration_seconds < 1800 THEN 'Standard (10-30 min)'
        WHEN duration_seconds < 3600 THEN 'Long (30-60 min)'
        ELSE 'Extended (> 1 hour)'
    END
ORDER BY video_count DESC;

Step 6: Find Videos by Duration Range

Query videos within specific duration.

SELECT
    title,
    category,
    duration_seconds / 60 as minutes,
    creator
FROM video_content
WHERE duration_seconds BETWEEN 300 AND 900
ORDER BY duration_seconds;

Step 7: Average Duration by Category

Calculate average duration per category.

SELECT
    category,
    COUNT(*) as video_count,
    AVG(duration_seconds) / 60 as avg_minutes,
    MIN(duration_seconds) / 60 as min_minutes,
    MAX(duration_seconds) / 60 as max_minutes
FROM video_content
GROUP BY category
ORDER BY avg_minutes DESC;

Step 8: Total Content Duration

Calculate total content library duration.

SELECT
    COUNT(*) as total_videos,
    SUM(duration_seconds) as total_seconds,
    SUM(duration_seconds) / 60 as total_minutes,
    SUM(duration_seconds) / 3600 as total_hours
FROM video_content
WHERE is_published = TRUE;

Step 9: Duration by Content Type

Analyze duration distribution by type.

SELECT
    content_type,
    COUNT(*) as count,
    AVG(duration_seconds) / 60 as avg_minutes,
    SUM(duration_seconds) / 60 as total_minutes
FROM video_content
GROUP BY content_type
ORDER BY avg_minutes DESC;

Step 10: Videos for Time Slot

Find videos that fit a time slot.

SELECT
    title,
    category,
    duration_seconds / 60 as minutes,
    content_type
FROM video_content
WHERE duration_seconds <= 600
  AND is_published = TRUE
ORDER BY duration_seconds DESC;

Step 11: Creator Productivity

Analyze content duration by creator.

SELECT
    creator,
    COUNT(*) as video_count,
    SUM(duration_seconds) / 3600 as total_hours,
    AVG(duration_seconds) / 60 as avg_minutes
FROM video_content
GROUP BY creator
ORDER BY total_hours DESC;

Step 12: Monthly Content Duration

Track duration added per month.

SELECT
    publish_date,
    COUNT(*) as videos_published,
    SUM(duration_seconds) / 60 as minutes_added
FROM video_content
WHERE is_published = TRUE
GROUP BY publish_date
ORDER BY publish_date;

Cleanup (Optional)

DROP TABLE IF EXISTS video_content;

Expected Outcomes

  • Duration calculations work
  • Category classification functions
  • Range queries return correct results
  • Statistics aggregated properly
  • Time-based filtering works

Duration Categories

Category Duration Use Case
Short < 2 min Quick tips, teasers
Medium 2-10 min Feature demos
Standard 10-30 min Tutorials
Long 30-60 min Webinars
Extended > 1 hour Courses, events

Key Concepts Learned

  • Duration-based queries
  • Time formatting in SQL
  • CASE expressions for ranges
  • Duration aggregations
  • Content scheduling queries

Tags

sqlbeginnervideodurationanalyticsscheduling