Наиболее часто встречающиеся ошибки при выполнении GROUP BY

Одна из основных ошибок при применении предложения GROUP BY связана с попыткой указать в предложении GROUP BY атрибут, которого нет в списке SELECT.

Пример 63

Задание.

Сформировать запрос для вывода названий всех дисциплин, по которым средняя оценка меньше 4.

Решение:

SELECT NameSubject, ROUND(AVG(Mark),1)

FROM Progress P,Subject S

WHERE P.IDSubject=S.IDSubject

GROUP BY P.IDSubject

HAVING AVG(Mark)<4

Результат реализации запроса:

Server: Msg 8120

Column 'S.NameSubject' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Другая часто встречающаяся ошибка связана с тем, что в предложении SELECT указываются атрибуты, которые не являются параметрами группировки или агрегатной функции.

Пример 64

SELECT NameSubject, P.IDSubject, ROUND(AVG(Mark),1)

FROM Progress P,Subject S

WHERE P.IDSubject=S.IDSubject

GROUP BY P.IDSubject

HAVING AVG(Mark)<4

Результат реализации запроса:

Server: Msg 8120

Column 'S.NameSubject' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Выходом из положения может быть группировка как по атрибуту NameSubject, так и по IDSubject.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: