[ { "id": "q1", "title": "List all students", "difficulty": "Beginner", "description": "Retrieve the names and emails of all students.", "hint": "Use SELECT on the students table.", "expected_sql": "SELECT name, email FROM students;" }, { "id": "q2", "title": "List all courses", "difficulty": "Beginner", "description": "Show all courses with their names and credits.", "hint": "Use SELECT on the courses table.", "expected_sql": "SELECT name, credits FROM courses;" }, { "id": "q3", "title": "Find Spring 2023 enrollments", "difficulty": "Beginner", "description": "Display student IDs and course IDs for enrollments in Spring 2023.", "hint": "Use WHERE clause to filter by semester.", "expected_sql": "SELECT student_id, course_id FROM enrollments WHERE semester = 'Spring 2023';" }, { "id": "q4", "title": "Count total students", "difficulty": "Beginner", "description": "Count the total number of students in the system.", "hint": "Use COUNT() on the students table.", "expected_sql": "SELECT COUNT(*) AS total_students FROM students;" }, { "id": "q5", "title": "List students in CSE department", "difficulty": "Beginner", "description": "Show names and emails of students in the CSE department.", "hint": "Use WHERE clause to filter by department.", "expected_sql": "SELECT name, email FROM students WHERE department = 'CSE';" }, { "id": "q6", "title": "List distinct departments", "difficulty": "Beginner", "description": "Retrieve all unique departments from the students table.", "hint": "Use DISTINCT to avoid duplicate departments.", "expected_sql": "SELECT DISTINCT department FROM students;" }, { "id": "q7", "title": "List courses in CSE department", "difficulty": "Beginner", "description": "Show all course names and instructors in the CSE department.", "hint": "Use WHERE clause to filter by department.", "expected_sql": "SELECT name, instructor FROM courses WHERE department = 'CSE';" }, { "id": "q8", "title": "List second-year students", "difficulty": "Beginner", "description": "Retrieve names and emails of students in year 2.", "hint": "Use WHERE clause to filter by year.", "expected_sql": "SELECT name, email FROM students WHERE year = 2;" }, { "id": "q9", "title": "Find instructor for Data Structures", "difficulty": "Beginner", "description": "Show the instructor for the 'Data Structures' course.", "hint": "Use WHERE clause to filter by course name.", "expected_sql": "SELECT instructor FROM courses WHERE name = 'Data Structures';" }, { "id": "q10", "title": "List student IDs and names", "difficulty": "Beginner", "description": "Show all student IDs and their corresponding names.", "hint": "Use SELECT on the students table.", "expected_sql": "SELECT student_id, name FROM students;" }, { "id": "q11", "title": "Students and their enrolled courses", "difficulty": "Intermediate", "description": "Display student names and the names of courses they are enrolled in.", "hint": "Join students, enrollments, and courses tables.", "expected_sql": "SELECT s.name AS student_name, c.name AS course_name FROM enrollments e JOIN students s ON e.student_id = s.student_id JOIN courses c ON e.course_id = c.course_id;" }, { "id": "q12", "title": "Count students per course", "difficulty": "Intermediate", "description": "Show the number of students enrolled in each course.", "hint": "Join enrollments with courses and GROUP BY course name.", "expected_sql": "SELECT c.name, COUNT(e.student_id) AS student_count FROM enrollments e JOIN courses c ON e.course_id = c.course_id GROUP BY c.name;" }, { "id": "q13", "title": "Students with A grades", "difficulty": "Intermediate", "description": "List names of students who received an 'A' grade in any course.", "hint": "Join enrollments with students and filter by grade.", "expected_sql": "SELECT DISTINCT s.name FROM enrollments e JOIN students s ON e.student_id = s.student_id WHERE e.grade = 'A';" }, { "id": "q14", "title": "Courses with no enrollments", "difficulty": "Intermediate", "description": "Find courses that have no students enrolled.", "hint": "Use LEFT JOIN and filter for NULL enrollment IDs.", "expected_sql": "SELECT c.name FROM courses c LEFT JOIN enrollments e ON c.course_id = e.course_id WHERE e.enrollment_id IS NULL;" }, { "id": "q15", "title": "Grades for Operating Systems", "difficulty": "Intermediate", "description": "Show student names and grades for the 'Operating Systems' course.", "hint": "Join enrollments, students, and courses, filter by course name.", "expected_sql": "SELECT s.name, e.grade FROM enrollments e JOIN students s ON e.student_id = s.student_id JOIN courses c ON e.course_id = c.course_id WHERE c.name = 'Operating Systems';" }, { "id": "q16", "title": "Courses taught by Dr. Anil Kapoor", "difficulty": "Intermediate", "description": "List all courses taught by Dr. Anil Kapoor.", "hint": "Use WHERE clause to filter by instructor.", "expected_sql": "SELECT name FROM courses WHERE instructor = 'Dr. Anil Kapoor';" }, { "id": "q17", "title": "Students with multiple enrollments", "difficulty": "Intermediate", "description": "Find students enrolled in more than one course.", "hint": "Group by student name and use HAVING clause.", "expected_sql": "SELECT s.name, COUNT(e.course_id) AS course_count FROM enrollments e JOIN students s ON e.student_id = s.student_id GROUP BY s.name HAVING COUNT(e.course_id) > 1;" }, { "id": "q18", "title": "Total credits per student", "difficulty": "Intermediate", "description": "Calculate the total credits each student is enrolled in.", "hint": "Join enrollments with courses and SUM credits.", "expected_sql": "SELECT s.name, SUM(c.credits) AS total_credits FROM enrollments e JOIN students s ON e.student_id = s.student_id JOIN courses c ON e.course_id = c.course_id GROUP BY s.name;" }, { "id": "q19", "title": "Courses per department", "difficulty": "Intermediate", "description": "Count the number of courses offered by each department.", "hint": "Group by department in the courses table.", "expected_sql": "SELECT department, COUNT(course_id) AS course_count FROM courses GROUP BY department;" }, { "id": "q20", "title": "Student enrollment semesters", "difficulty": "Intermediate", "description": "List student names and the semesters they are enrolled in.", "hint": "Join enrollments with students.", "expected_sql": "SELECT s.name, e.semester FROM enrollments e JOIN students s ON e.student_id = s.student_id;" }, { "id": "q21", "title": "Average GPA per course", "difficulty": "Advanced", "description": "Calculate the average GPA per course, mapping grades to numeric values (A=4.0, A-=3.7, B+=3.3, B=3.0).", "hint": "Use CASE to map grades and AVG for calculation.", "expected_sql": "SELECT c.name, AVG(CASE e.grade WHEN 'A' THEN 4.0 WHEN 'A-' THEN 3.7 WHEN 'B+' THEN 3.3 WHEN 'B' THEN 3.0 ELSE 0 END) AS avg_gpa FROM enrollments e JOIN courses c ON e.course_id = c.course_id GROUP BY c.name;" }, { "id": "q22", "title": "Top student per course", "difficulty": "Advanced", "description": "Find the student with the highest grade in each course.", "hint": "Use a subquery to find the maximum grade per course.", "expected_sql": "SELECT s.name, c.name AS course_name, e.grade FROM enrollments e JOIN students s ON e.student_id = s.student_id JOIN courses c ON e.course_id = c.course_id WHERE (e.course_id, e.grade) IN (SELECT course_id, MAX(grade) FROM enrollments GROUP BY course_id);" }, { "id": "q23", "title": "Average credits per department", "difficulty": "Advanced", "description": "Calculate the average total credits per student in each department.", "hint": "Group by student and department, then average credits.", "expected_sql": "SELECT s.department, AVG(total_credits) AS avg_credits FROM (SELECT s.student_id, s.department, SUM(c.credits) AS total_credits FROM enrollments e JOIN students s ON e.student_id = s.student_id JOIN courses c ON e.course_id = c.course_id GROUP BY s.student_id, s.department) AS temp GROUP BY department;" }, { "id": "q24", "title": "Students not enrolled", "difficulty": "Advanced", "description": "List students who are not enrolled in any course.", "hint": "Use LEFT JOIN and filter for NULL enrollments.", "expected_sql": "SELECT s.name FROM students s LEFT JOIN enrollments e ON s.student_id = e.student_id WHERE e.enrollment_id IS NULL;" }, { "id": "q25", "title": "Course with highest average GPA", "difficulty": "Advanced", "description": "Find the course with the highest average GPA.", "hint": "Map grades to GPA, group by course, and use LIMIT.", "expected_sql": "SELECT c.name, AVG(CASE e.grade WHEN 'A' THEN 4.0 WHEN 'A-' THEN 3.7 WHEN 'B+' THEN 3.3 WHEN 'B' THEN 3.0 ELSE 0 END) AS avg_gpa FROM enrollments e JOIN courses c ON e.course_id = c.course_id GROUP BY c.name ORDER BY avg_gpa DESC LIMIT 1;" }, { "id": "q26", "title": "Students enrolled in all CSE courses", "difficulty": "Advanced", "description": "List students who have enrolled in every CSE department course.", "hint": "Compare count of CSE courses with enrolled courses using HAVING.", "expected_sql": "SELECT s.name FROM enrollments e JOIN students s ON e.student_id = s.student_id JOIN courses c ON e.course_id = c.course_id WHERE c.department = 'CSE' GROUP BY s.name HAVING COUNT(DISTINCT c.course_id) = (SELECT COUNT(*) FROM courses WHERE department = 'CSE');" }, { "id": "q27", "title": "Courses with multi-department students", "difficulty": "Advanced", "description": "Find courses with students from more than one department.", "hint": "Group by course and count distinct departments.", "expected_sql": "SELECT c.name FROM enrollments e JOIN courses c ON e.course_id = c.course_id JOIN students s ON e.student_id = s.student_id GROUP BY c.name HAVING COUNT(DISTINCT s.department) > 1;" }, { "id": "q28", "title": "Instructor average GPA", "difficulty": "Advanced", "description": "Calculate the average GPA for students in courses taught by each instructor.", "hint": "Join tables, map grades to GPA, and group by instructor.", "expected_sql": "SELECT c.instructor, AVG(CASE e.grade WHEN 'A' THEN 4.0 WHEN 'A-' THEN 3.7 WHEN 'B+' THEN 3.3 WHEN 'B' THEN 3.0 ELSE 0 END) AS avg_gpa FROM enrollments e JOIN courses c ON e.course_id = c.course_id GROUP BY c.instructor;" }, { "id": "q29", "title": "Students with consistent grades", "difficulty": "Advanced", "description": "List students who received the same grade in multiple courses.", "hint": "Group by student and grade, filter for count > 1.", "expected_sql": "SELECT s.name, e.grade FROM enrollments e JOIN students s ON e.student_id = s.student_id GROUP BY s.name, e.grade HAVING COUNT(*) > 1;" }, { "id": "q30", "title": "Highest credit course per department", "difficulty": "Advanced", "description": "Find the course with the highest credits in each department.", "hint": "Use a window function or subquery to rank courses by credits.", "expected_sql": "SELECT department, name, credits FROM (SELECT department, name, credits, RANK() OVER (PARTITION BY department ORDER BY credits DESC) AS rnk FROM courses) AS ranked WHERE rnk = 1;" } ]