SQL

Natural language to SQL query generation evaluates text-to-query fidelity and schema reasoning. This task is particularly relevant for analytics chat assistants and simplified database interfaces where users need to query data using natural language. Models must understand both the intent behind the question and the structure of the underlying database schema.

75
Duration
12s
Input Tokens
1033
Output Tokens
404
Cost
$0.00
Context
Input
Hi I'm Oscar that enrolled in 2018, I don't remember what courses I completed, can you help me?
Expected output
SELECT DISTINCT c.title FROM users u JOIN enrollments e ON u.user_id = e.user_id JOIN lessons l ON l.course_id = e.course_id JOIN completions cp ON cp.lesson_id = l.lesson_id AND cp.user_id = u.user_id JOIN courses c ON c.course_id = l.course_id WHERE u.name ILIKE '%oscar%' AND DATE_TRUNC('year', e.enrolled_at) = DATE '2018-01-01';
Model output
WITH oscar_id AS (
    SELECT user_id FROM users WHERE name = 'Oscar'
),
completed_courses AS (
    SELECT 
        c.course_id,
        c.title AS course_title,
        e.enrolled_at
    FROM enrollments e
    JOIN courses c ON e.course_id = c.course_id
    WHERE e.user_id = (SELECT user_id FROM oscar_id)
      AND e.status = 'completed'
      AND EXTRACT(YEAR FROM e.enrolled_at) = 2018
      AND (
          SELECT COUNT(*)
          FROM lessons l
          WHERE l.course_id = c.course_id
      ) = (
          SELECT COUNT(*)
          FROM completions comp
          WHERE comp.user_id = (SELECT user_id FROM oscar_id)
            AND comp.lesson_id IN (
                SELECT lesson_id FROM lessons WHERE course_id = c.course_id
            )
      )
)
SELECT 
    course_id,
    course_title,
    enrolled_at AS completion_date
FROM completed_courses
ORDER BY enrolled_at;