Video Duration Query

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

All recipes· video-streaming· 8 minutesbeginner

Video Duration Query

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

Run this on your own machine

Install SynapCores Community Edition free, paste the SQL or Cypher above into the bundled web UI, and watch it run.

Download Free CE