Tìm điểm lớn nhất trong mỗi môn học của mỗi người rồi tính điểm trung bình của max của những môn đó

E có 1 đề bài yêu cầu. Tìm điểm max trong mỗi môn học(do mỗi môn có nhiều điểm) của mỗi ng rồi tính điểm trung bình của max của những môn đó. Không biết em nên làm thế nào ạ? Mn cho e gợi ý với ạ.

group by? không biết là do em chưa học tới hay là bản SQL này bọn em k được học. Tại e chưa được nghe đến group by ạ . :frowning:

Vậy là chưa học đến stored proc rồi :smiley: khá căng vì bài này là aggregation rồi mà chưa học group by.

vậy chắc em chưa đc học ạ. vậy có cách nào update diểm trung bình trong bảng kết quả theo yêu cầu trên mà k dùng group by k ạ?

hay a có thể giải thích qua về cách làm group by cho e đc k ạ?

Lên youtube, search: sử dụng group by trong sql server
sẽ có rất rất rất nhiều hướng dẫn, vd như cái này.

Trở lại với câu hỏi của bạn, với câu này bạn phải làm qua 2 bước:

1. lấy max(điểm) theo từng sv, và từng môn, vd:

  SELECT mssv, msmon, max(diem) max_diem
      FROM ....
    GROUP BY mssv, msmon

2. lấy avg(max_diem) theo từng sv.

SELECT mssv, avg(max_diem)
  FROM <câu trên>
 GROUP BY mssv

=> Giờ thì bạn có thể gom 2 câu lại, dùng subquery hoặc CTE (trong Oracle gọi là mệnh đề WITH).

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?