2011-09-19 4 views
2

일부 기본 SQL 함수를 사용하려고합니다. 일부 데이터의 평균을 가져와 내림차순으로 정렬해야합니다. 내가 오류는 "그룹 기능을 사용할 수 없습니다"입니다HAVING과 함께 ORDER BY 오류가 발생했습니다.

테이블 :

STUDENTS 
----------- 
ID 
CLASS 
GRADE 
ROOM 

SQL : 나는 것 HAVING 절과 함께하고 사용할 수 없습니다에 의해 순서를 들었다

SELECT ID, class, AVG(Grade) AS AvgGrade 
     FROM Students 
    GROUP BY AVG(Grade) 
    HAVING AVG(Grade) >= 3.0 
    ORDER BY AVG(Grade) DESC 

기능을 반복해야합니다. 어떤 도움이 필요합니까?

+1

어떤 DBMS를 사용하고 있습니까? –

답변

5

GROUP BY avg(Grade)은 의미가 없습니다.

GROUP BY 표현식은 집계를 적용 할 그룹을 정의합니다.

은 아마도 당신은 당신은 GROUP BY에서 avg(Grade)을 가질 수 없습니다 GROUP BY ID, class

4

이 필요합니다.

예를 들어, 사용자는 : GROUP BY ID, class을 가져야합니다.

표준 SQL에서
0

SELECT 조항 만 AS 조항 ("열 별칭은"), 즉

SELECT ID, class, AVG(Grade) AS AvgGrade 
    FROM Students 
GROUP BY ID, class 
HAVING AVG(Grade) >= 3.0 
ORDER BY AvgGrade DESC; 

모든 SQL 제품 충실 물론, 표준을 구현 아니 ORDER BY 절에서 허용되지만, 위해야 예를 들어, SQL Server에서 작동합니다.