Как получить среднее значение в T-SQL из определенной таблицы и связать его результат с другой? - PullRequest
0 голосов
/ 29 апреля 2019

Итак, в основном у меня есть две таблицы:

  • STUDENT {IdStudent Int (PK), IndexNr Varchar (10), Year Int, Имя Varchar (32), Фамилия Varchar (64)}
  • MARK {IdMark Int (PK), IdStudent Int (FK), Value Int, Subject Varchar (32)}

и в качестве первой части этого упражнения мне нужно перебежатьих и захватить всех студентов определенного года (давайте 2) и выписать их среднюю оценку отдельно для каждого из них.

Я хотел сделать это с помощью курсора, но у меня возникли проблемы с этим.Главным образом потому, что я не могу правильно выбрать эти средние оценки, используя внутреннее соединение.

Например, я хотел бы вернуть IndexNr и AverageMark.

Ответы [ 3 ]

1 голос
/ 29 апреля 2019

Вы можете сделать это, присоединившись к таблицам, а затем использовать group by каждого учащегося:

select 
  s.idstudent, s.name, s.surname
  avg(m.Value) AverageMark
from student s inner join mark m
on m.idstudent = s.idstudent
where s.year = 2019
group by s.idstudent, s.name, s.surname

, но не должна ли таблица mark также содержать столбец year?

1 голос
/ 29 апреля 2019

Я думаю GROUP BY - это то, что вы ищете: https://www.w3schools.com/sql/sql_groupby.asp

SELECT 
    s.Name
    ,s.Year
    ,AVG(m.Value) as Mean        
FROM Student s
JOIN Mark m ON m.IdStudent = s.IdStudent
GROUP BY
    s.Name
    ,s.Year
0 голосов
/ 29 апреля 2019

Если вы хотите в среднем более всех студентов, то вам нужен один ряд. Не используйте group by.

Вам также нужно where для условия year:

SELECT AVG(s.Value) as Mean
FROM student s
WHERE s.year = ?  -- whatever year you want
...