2013-03-06 101 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'代表*关系数据库管理系统*。 'RDBMS是SQL'的基础,并且适用于所有现代数据库系统,如MS SQL Server,IBM DB2,Oracle,MySQL等...... – 2013-03-06 04:19:30

回答

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 2013-03-06 04:51:46

+0

也许它可能会更简单,如果你可以告诉我你正在使用':D'的数据库服务器 – 2013-03-06 05:34:13