【问题标题】:SQL - nested aggregatesSQL - 嵌套聚合
【发布时间】:2013-03-06 04:12:08
【问题描述】:

我有这个:

    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。

我错过了什么?

【问题讨论】:

  • 你在用什么RDBMSRDBMS 代表关系数据库管理系统RDBMS is the basis for SQL,适用于所有现代数据库系统,如 MS SQL Server、IBM DB2、Oracle、MySQL 等...

标签: sql max having average


【解决方案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 具有最大的平均值

【讨论】:

  • 如果您能告诉我您正在使用的数据库服务器:D,可能会更简单
猜你喜欢
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 2021-03-13
  • 2021-12-14
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多