SQL Basics - Project
-- Get the last name, first name, classroom id, and grades of the students
SELECT s.LastName, s.FirstName, se.ClassroomId, se.Grade
FROM Students s
INNER JOIN StudentEnrollments se ON s.StudentId = se.StudentId
-- Get the last name, first name, classroom name, and grades of the students
SELECT s.LastName, s.FirstName, c.ClassName, se.Grade
FROM Students s
INNER JOIN StudentEnrollments se ON s.StudentId = se.StudentId
INNER JOIN Classrooms c ON se.ClassroomId = c.ClassroomId
-- Get the first name, last name, average of all grades of each student
SELECT s.FirstName, s.LastName, AVG(se.Grade) AS AverageGrade
FROM Students s
INNER JOIN StudentEnrollments se ON s.StudentId = se.StudentId
GROUP BY s.StudentId
-- What is the average score of Donald Duck?
SELECT s.FirstName, s.LastName, AVG(se.Grade)
FROM Students s
INNER JOIN StudentEnrollments se ON s.StudentId = se.StudentId
WHERE s.FirstName = 'Donald' AND
s.LastName = 'Duck'
-- Which class of Mickey Mouse has the highest grade? (Give the class name)
SELECT s.FirstName, s.LastName, se.Grade
FROM Students s
INNER JOIN StudentEnrollments se ON s.StudentId = se.StudentId
WHERE s.FirstName = 'Mickey' AND
s.LastName = 'Mouse'
ORDER BY se.Grade DESC
LIMIT 1
-- Get the average score for each class (show the class name and average score)
SELECT c.ClassName, AVG(se.Grade) AS AverageGrade
FROM StudentEnrollments se
INNER JOIN Classrooms c ON se.ClassroomId = c.ClassroomId
GROUP BY c.ClassName
-- Get the last name, first name, Class Name and weighted grade (weight * grade) of each student
SELECT s.LastName, s.FirstName, c.ClassName, (c.Weight * se.Grade) AS WeightedGrade
FROM Students s
INNER JOIN StudentEnrollments se ON s.StudentId = se.StudentId
INNER JOIN Classrooms c ON se.ClassroomId = c.ClassroomId
-- What is the final grade of Donald Duck?
-- To compute the final grade, sum all the weight * grade of each class
-- Example: (Class #1 Weight * Class #1 Grade) + (Class #2 Weight * Class #2 Grade) and so on
SELECT SUM(c.Weight * se.Grade) AS FinalGrade
FROM StudentEnrollments se
INNER JOIN Classrooms c ON se.ClassroomId = c.ClassroomId
WHERE StudentId IN
(
SELECT StudentId
FROM Students
WHERE LastName = 'Duck' AND FirstName = 'Donald'
)
-- What is the final grade of all of the students? Show FirstName, LastName and the Final Grade
SELECT s.FirstName, s.LastName, SUM(c.Weight * se.Grade) AS FinalGrade
FROM Students s
INNER JOIN StudentEnrollments se ON s.StudentId = se.StudentId
INNER JOIN Classrooms c ON se.ClassroomId = c.ClassroomId
GROUP BY s.StudentId
-- Get the Average grade of each student for the Running and Acting classes. Show FirstName, LastName, and Average Grade of the 2 classes
SELECT s.FirstName, s.LastName, AVG(se.Grade) AS AverageGrade
FROM Students s
INNER JOIN StudentEnrollments se ON s.StudentId = se.StudentId
WHERE ClassroomId IN
(
SELECT ClassroomId
FROM Classrooms
WHERE ClassName IN ('Running', 'Acting')
)
GROUP BY s.StudentId