2017-02-14 1 views
1

В таблице у меня есть 1 столбец (Total_marks) и другой столбец (User_id), теперь я хочу сформулировать запрос для выбора user_id и avg-отметок (среднее из total_marks, охватывающих несколько строк) каждого идентификатора пользователя.как сформулировать запрос tsql для Avg из нескольких строк столбца на основе соответствующего значения во втором столбце?

таблица выглядит следующим образом:

user_id | Student_id | Total_marks 

    U001  |  S0001 | 56 
    U004  |  S0002 | 72 
    U001  |  S0003 | 60 
    U003  |  S0004 | 32 
    U004  |  S0005 | 45 

Я пробовал:

select User_id,sum(Total_marks)/ sum(nullif(NumberOFNOTNULL,0)) as avgmarks from [ABC_transctn] where sub_code='some_subject' and User_id!='' group by user_id 

Это дает следующее сообщение об ошибке:

Msg 8117, уровень 16, состояние 1, строка 1 Операнд данные Тип varchar недействителен для оператора сумм. Msg 207, уровень 16, состояние 1, строка 1 Недопустимое имя столбца 'NumberOFNOTNULL'. Msg 207, уровень 16, состояние 1, строка 1 Недопустимое имя столбца 'NumberOFNOTNULL'.

Каким будет правильный запрос?

ответ

0

Если вы пытаетесь вычислить среднее значение, то я предполагаю, что это нужно сделать:

select User_id,sum(convert(int,Total_marks))/ count(*) as avgmarks from [ABC_transctn] 
      where sub_code='some_subject' and User_id!='' group by user_id 
+0

Спасибо Ранджана, но она по-прежнему дает ошибку Msg 8117, Level 16, State 1, Line 1 Операнд типа данных VARCHAR является недействительным для оператора суммы –

+0

Я попробовал это, а также Cast, но затем он не возвращает результат. Просто дает заголовки столбцов. У меня есть данные на месте –

Смежные вопросы

 Смежные вопросы