Session 1: Query Debugging

Focus: Fix broken SQL queries

Time: 15-20 minutes

📋 Database Schema (Always Visible)
Students (student_id, name, major, gpa)
Courses (course_id, course_name, credits)
Enrollments (enrollment_id, student_id, course_id, grade)

Exercise 1: Missing JOIN Clause EASY

Task: This query has an error. Fix it so it shows students with 'A' grades.
SELECT * FROM Students
JOIN Enrollments
WHERE Enrollments.grade = 'A';

Solution

SELECT * FROM Students
JOIN Enrollments ON Students.student_id = Enrollments.student_id
WHERE Enrollments.grade = 'A';

What was wrong: Missing ON clause - JOIN needs to know how to match the tables.

Exercise 2: WHERE vs HAVING MEDIUM

Task: This query should show courses with 2 or more students, but it gives an error. Fix it.
SELECT c.course_name, COUNT(*) as student_count
FROM Courses c
JOIN Enrollments e ON c.course_id = e.course_id
WHERE COUNT(*) >= 2
GROUP BY c.course_name;

Solution

SELECT c.course_name, COUNT(*) as student_count
FROM Courses c
JOIN Enrollments e ON c.course_id = e.course_id
GROUP BY c.course_name
HAVING COUNT(*) >= 2;

What was wrong: Can't use COUNT() in WHERE. Use HAVING instead.

Remember: WHERE filters rows BEFORE grouping, HAVING filters AFTER grouping.

Exercise 3: Wrong Clause Order HARD

Task: This query has the clauses in the wrong order. Fix it.
SELECT name, major
FROM Students
GROUP BY major
WHERE gpa > 3.5;

Solution

SELECT name, major
FROM Students
WHERE gpa > 3.5
GROUP BY major;

What was wrong: WHERE must come BEFORE GROUP BY.

Correct order: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY

← Back to SQL Skills Lab