Bạn có một số cách để làm điều đó, nhưng cố gắng không tạo bảng tạm thời, bạn có thể làm như vậy:
select
s.id,
avg(case when sb.id = '01' then s.score end) as math,
avg(case when sb.id = '02' then s.score end) as bio
from student s
join subject sb on (sb.id = s.subject_id)
group by s.id
Chỉ cần điền các dòng tổng / chữ hoa vào các chủ đề khác khi bạn cần!
Hy vọng nó sẽ hữu ích.