Table: students
+-------------+----------+ | Column Name | Type | +-------------+----------+ | student_id | int | | name | varchar | | major | varchar | +-------------+----------+ student_id is the primary key for this table. Each row contains the student ID, student name, and their major.
Table: courses
+-------------+-------------------+
| Column Name | Type |
+-------------+-------------------+
| course_id | int |
| name | varchar |
| credits | int |
| major | varchar |
| mandatory | enum |
+-------------+-------------------+
course_id is the primary key for this table.
mandatory is an enum type of ('Yes', 'No').
Each row contains the course ID, course name, credits, major it belongs to, and whether the course is mandatory.
Table: enrollments
+-------------+----------+ | Column Name | Type | +-------------+----------+ | student_id | int | | course_id | int | | semester | varchar | | grade | varchar | | GPA | decimal | +-------------+----------+ (student_id, course_id, semester) is the primary key (combination of columns with unique values) for this table. Each row contains the student ID, course ID, semester, and grade received.
Write a solution to find the students who meet the following criteria:
GPA of at least 2.5 across all their courses (including those outside their major).Return the result table ordered by student_id in ascending order.
Example:
Input:
students table:
+------------+------------------+------------------+ | student_id | name | major | +------------+------------------+------------------+ | 1 | Alice | Computer Science | | 2 | Bob | Computer Science | | 3 | Charlie | Mathematics | | 4 | David | Mathematics | +------------+------------------+------------------+
courses table:
+-----------+-------------------+---------+------------------+----------+ | course_id | name | credits | major | mandatory| +-----------+-------------------+---------+------------------+----------+ | 101 | Algorithms | 3 | Computer Science | yes | | 102 | Data Structures | 3 | Computer Science | yes | | 103 | Calculus | 4 | Mathematics | yes | | 104 | Linear Algebra | 4 | Mathematics | yes | | 105 | Machine Learning | 3 | Computer Science | no | | 106 | Probability | 3 | Mathematics | no | | 107 | Operating Systems | 3 | Computer Science | no | | 108 | Statistics | 3 | Mathematics | no | +-----------+-------------------+---------+------------------+----------+
enrollments table:
+------------+-----------+-------------+-------+-----+ | student_id | course_id | semester | grade | GPA | +------------+-----------+-------------+-------+-----+ | 1 | 101 | Fall 2023 | A | 4.0 | | 1 | 102 | Spring 2023 | A | 4.0 | | 1 | 105 | Spring 2023 | A | 4.0 | | 1 | 107 | Fall 2023 | B | 3.5 | | 2 | 101 | Fall 2023 | A | 4.0 | | 2 | 102 | Spring 2023 | B | 3.0 | | 3 | 103 | Fall 2023 | A | 4.0 | | 3 | 104 | Spring 2023 | A | 4.0 | | 3 | 106 | Spring 2023 | A | 4.0 | | 3 | 108 | Fall 2023 | B | 3.5 | | 4 | 103 | Fall 2023 | B | 3.0 | | 4 | 104 | Spring 2023 | B | 3.0 | +------------+-----------+-------------+-------+-----+
Output:
+------------+ | student_id | +------------+ | 1 | | 3 | +------------+
Explanation:
Note: Output table is ordered by student_id in ascending order.
Loading editor...
{"headers":{"students":["student_id","name","major"],"courses":["course_id","name","credits","major","mandatory"],"enrollments":["student_id","course_id","semester","grade","GPA"]},"rows":{"students":[[1,"Alice","Computer Science"],[2,"Bob","Computer Science"],[3,"Charlie","Mathematics"],[4,"David","Mathematics"]],"courses":[[101,"Algorithms",3,"Computer Science","Yes"],[102,"Data Structures",3,"Computer Science","Yes"],[103,"Calculus",4,"Mathematics","Yes"],[104,"Linear Algebra",4,"Mathematics","Yes"],[105,"Machine Learning",3,"Computer Science","No"],[106,"Probability",3,"Mathematics","No"],[107,"Operating Systems",3,"Computer Science","No"],[108,"Statistics",3,"Mathematics","No"]],"enrollments":[[1,101,"Fall 2023","A",4.0],[1,102,"Spring 2023","A",4.0],[1,105,"Spring 2023","A",4.0],[1,107,"Fall 2023","B",3.5],[2,101,"Fall 2023","A",4.0],[2,102,"Spring 2023","B",3.0],[3,103,"Fall 2023","A",4.0],[3,104,"Spring 2023","A",4.0],[3,106,"Spring 2023","A",4.0],[3,108,"Fall 2023","B",3.5],[4,103,"Fall 2023","B",3.0],[4,104,"Spring 2023","B",3.0]]}}