Abdelrahman Hisham Khalil
23100360
Database
Lab 3
CREATE DATABASE NileUniversityDB;
CREATE TABLE Students (
student_id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
major VARCHAR(50),
enrollment_year INT NOT NULL CHECK (enrollment_year >= 2000),
status VARCHAR(20) DEFAULT 'Enrolled'
);
CREATE TABLE Courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(100) NOT NULL,
course_code VARCHAR(20) UNIQUE NOT NULL,
instructor VARCHAR(50),
credits INT NOT NULL CHECK (credits > 0),
is_elective BOOLEAN DEFAULT FALSE
);
CREATE TABLE Enrollments (
enrollment_id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT,
course_id INT,
enrollment_date DATE NOT NULL,
grade VARCHAR(2),
FOREIGN KEY (student_id) REFERENCES Students(student_id),
FOREIGN KEY (course_id) REFERENCES Courses(course_id)
);
SELECT major, COUNT(*)
FROM Students
GROUP BY major;
SELECT AVG(credits)
FROM Courses;
SELECT MIN(enrollment_year), MAX(enrollment_year)
FROM Students;
SELECT Students.major, SUM(Courses.credits)
FROM Students
JOIN Enrollments ON Students.student_id = Enrollments.student_id
JOIN Courses ON Enrollments.course_id = Courses.course_id
GROUP BY Students.major;
SELECT CONCAT(Students.first_name, ' ', Students.last_name) AS full_name,
GROUP_CONCAT(Courses.course_name)
FROM Students
JOIN Enrollments ON Students.student_id = Enrollments.student_id
JOIN Courses ON Enrollments.course_id = Courses.course_id
GROUP BY full_name;
SELECT Courses.course_name, AVG(CAST(Enrollments.grade AS DECIMAL))
FROM Enrollments
JOIN Courses ON Enrollments.course_id = Courses.course_id
GROUP BY Courses.course_name;
SELECT Courses.course_name, COUNT(*)
FROM Enrollments
JOIN Courses ON Enrollments.course_id = Courses.course_id
GROUP BY Courses.course_name;
SELECT CONCAT(Students.first_name, ' ', Students.last_name) AS full_name, COUNT(*) AS
num_courses
FROM Students
JOIN Enrollments ON Students.student_id = Enrollments.student_id
GROUP BY full_name
ORDER BY num_courses DESC
LIMIT 1;
SELECT CONCAT(Students.first_name, ' ', Students.last_name) AS full_name,
SUM(Courses.credits)
FROM Students
JOIN Enrollments ON Students.student_id = Enrollments.student_id
JOIN Courses ON Enrollments.course_id = Courses.course_id
GROUP BY full_name;
SELECT Courses.course_name, AVG(CAST(Enrollments.grade AS DECIMAL)) AS avg_grade
FROM Enrollments
JOIN Courses ON Enrollments.course_id = Courses.course_id
GROUP BY Courses.course_name
ORDER BY avg_grade DESC
LIMIT 1;
SELECT Courses.course_name, AVG(CAST(Enrollments.grade AS DECIMAL)) AS avg_grade
FROM Enrollments
JOIN Courses ON Enrollments.course_id = Courses.course_id
GROUP BY Courses.course_name
HAVING avg_grade > 3.0;