Проблема с MS Access и вычислением среднего значения столбца - PullRequest
1 голос
/ 19 мая 2011

У меня есть запрос MS Access:

SELECT DISTINCT 
    Career.careerId, Student.studentName, Avg([Student-Topic].grade), Career.careerName
FROM 
    Career INNER JOIN 
        (
        (Student INNER JOIN [Student-Topic] 
            ON Student.studentId = [Student-Topic].studentId) 
                INNER JOIN [Student-Career] 
                    ON Student.studentId = [Student-Career].studentId) 
        ON Career.careerId = [Student-Career].careerId
WHERE 
    (((
        [Student-Career].careerId)=[Career].[careerId]) AND 
        (([Student-Topic].studentId)=[Student].[studentId]));

Без функции Avg запрос работает нормально, но когда я его размещаю, он ломается ...

В чем моя ошибка?

Ответы [ 2 ]

4 голосов
/ 19 мая 2011

Выражает ли этот запрос средние значения, которые вы ищете?

SELECT studentId, Avg(grade) AS average_grade
FROM [Student-Topic]
GROUP BY studentId;

Если это так, вы можете сохранить его как отдельный запрос и СОЕДИНИТЬ его со своим исходным запросом.Или включите его в исходный запрос как подзапрос.

Редактировать : Упс.Подзапрос может быть проблематичным, поскольку имя таблицы должно быть заключено в квадратные скобки ... что может сбить с толку конструктор запросов Access, когда он использует квадратные скобки вокруг подзапроса.Лучше дать таблице имя, которое не требует скобок ... Student_Topic вместо Student-Topic.

3 голосов
/ 19 мая 2011

вы должны сгруппировать данные при использовании агрегатных функций.

  • т.е. добавить предложение GROUP BY.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...