Focus: Fix broken SQL queries
Time: 15-20 minutes
SELECT * FROM Students
JOIN Enrollments
WHERE Enrollments.grade = 'A';
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.
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;
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.
SELECT name, major
FROM Students
GROUP BY major
WHERE gpa > 3.5;
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