The school's honour roll only lists students whose average is 80 or more. Group by student, work out each one's average score over all subjects (empty scores don't count), and keep those at 80 or above. Pick name and the average with ROUND(…, 1).
The tables
students
id
name
class
age
city
1
Amy
1A
12
Leeds
2
Ben
1A
13
York
3
Cara
1B
12
NULL
4
Dan
1B
14
Leeds
5
Eva
1A
12
Hull
6
Finn
1C
13
NULL
7
Gus
1C
12
York
7 rows
scores
id
student_id
subject
score
1
1
math
92
2
1
art
78
3
2
math
65
4
2
art
88
5
3
math
74
6
4
math
55
7
4
art
90
8
5
math
81
9
5
art
NULL
10
7
math
99
10 rows
students
id
name
class
age
city
1
Amy
1A
12
Leeds
2
Ben
1A
13
York
3
Cara
1B
12
NULL
4
Dan
1B
14
Leeds
5
Eva
1A
12
Hull
6
Finn
1C
13
NULL
7
Gus
1C
12
York
7 rows
scores
id
student_id
subject
score
1
1
math
92
2
1
art
78
3
2
math
65
4
2
art
88
5
3
math
74
6
4
math
55
7
4
art
90
8
5
math
81
9
5
art
NULL
10
7
math
99
10 rows
query.sql
SELECT students.name, ROUND(AVG(scores.score), 1)
FROM students
JOIN scores ON scores.student_id = students.id
-- your code here: GROUP BY students.name, then HAVING to keep AVG(scores.score) >= 80
;
Ctrl + Enter runs too
Result
Run shows what your query gives. When it looks right, Submit.