0

我有这个:

    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。

我错过了什么?

4

1 回答 1

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_IDs 具有最大的平均值

于 2013-03-06T04:25:16.873 回答