2013-03-06 4 views
0

나는이 있습니다SQL 중첩 집계

SELECT BRAND_ID, CAST (ROUND (AVG(PROD_PRICE), 2) AS NUMERIC (9, 2)) AS 'LARGEST AVERAGE' 
    FROM LGPRODUCT 
    GROUP BY BRAND_ID 

을 그리고 돼있처럼 브랜드 당 평균 가격의 무리를 표시합니다.

그러나 가장 높은 숫자 만 표시하려면 어떻게해야합니까? 또는 가장 낮은?

나는 모든 종류의 다른 방법으로 MAX를 사용하려고 노력해 왔으며 WHERE 및 HAVING을 사용해 보았습니다.

무엇이 누락 되었습니까?

+0

어떤 [RDBMS (http://en.wikipedia.org/wiki/Relational_database_management_system) 너 사용하고있어? 'RDBMS'는 * Relational Database Management System *을 의미합니다. 'RDBMS는 SQL의 기초입니다 .' 그리고 MS SQL Server, IBM DB2, Oracle, MySQL 등 현대의 모든 데이터베이스 시스템 ... –

답변

1

RDBMS을 언급 했으므로 아래 쿼리는 대부분의 rdbms에서 작동합니다. 상기 질의

SELECT BRAND_ID, 
     CAST (ROUND (AVG(PROD_PRICE), 2) AS NUMERIC (9, 2)) AS 'LARGEST AVERAGE' 
FROM LGPRODUCT 
GROUP BY BRAND_ID 
HAVING CAST (ROUND (AVG(PROD_PRICE), 2) AS NUMERIC (9, 2)) = 
     (
      SELECT MAX(xx) 
      FROM 
      (
       SELECT CAST (ROUND (AVG(PROD_PRICE), 2) AS NUMERIC (9, 2)) as xx 
       FROM LGPRODUCT 
       GROUP BY BRAND_ID 
      ) s 
     ) 

한 장점은 중복 처리이다 (BRAND_ID S가 갖는 최대 평균)

+0

그랬 으면 좋겠어, 고마워. 나는 그것이 단순한 무언가 일 줄 알았다. – madtroll

+0

아마도'D :'를 사용하고있는 데이터베이스 서버를 알 수 있다면 더 간단 할 수 있습니다. –