【问题标题】:SQL not a single group group function errorSQL不是单组组函数错误
【发布时间】:2017-10-25 17:52:17
【问题描述】:

我很难让我的 oracle 开发人员查询正确输出。当我有 avg 函数时,它不会给我一个单一的组组错误。当我把它拿出来时,它工作正常。我曾尝试使用 group by 而不是 order by,但它告诉我它不是 group by 表达式。

SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE)AS AVGER
FROM LGPRODUCT, LGBRAND
WHERE LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
ORDER BY BRAND_NAME;

【问题讨论】:

    标签: sql database


    【解决方案1】:

    当您在查询中包含聚合函数(如 avg、sum)时,您必须按未聚合的所有列进行分组。

    SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE)AS AVGER
    FROM LGPRODUCT, LGBRAND
    WHERE LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
    GROUP BY
    LGBRAND.BRAND_ID,
    LGBRAND.BRAND_NAME
    ORDER BY BRAND_NAME
    

    【讨论】:

      【解决方案2】:
      SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE)AS AVGER
      FROM LGPRODUCT, LGBRAND
      WHERE LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
      GROUP BY LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME
      ORDER BY BRAND_NAME;
      

      SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE)AS AVGER
      FROM LGPRODUCT INNER JOIN LGBRAND
      ON LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
      GROUP BY LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME
      ORDER BY BRAND_NAME;
      

      注意
      每当在 SELECT 中使用聚合函数(SUM, COUNT, AVG, MIN, MAX, ..)时,该 SELECT 中未包含在任何聚合函数中的所有其他列都必须出现在 GROUP BY 子句中

      【讨论】:

        【解决方案3】:

        您正在使用 AGGREGATION 函数,为此,您必须对所有需要聚合的数据进行分组。

        SELECT LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME, AVG(LGPRODUCT.PROD_PRICE) AS AVGER
          FROM LGPRODUCT, LGBRAND
         WHERE LGPRODUCT.BRAND_ID = LGBRAND.BRAND_ID
        group by LGBRAND.BRAND_ID, LGBRAND.BRAND_NAME -- This line here
        ORDER BY BRAND_NAME;
        

        【讨论】:

          【解决方案4】:

          对于您新添加的字段,您没有使用 group by,因此您会收到此错误,因此通过将新添加的字段包含到 group by 您将解决此错误并将所有必须聚合的数据分组.

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-23
            • 1970-01-01
            • 1970-01-01
            • 2017-08-24
            • 2014-06-21
            • 1970-01-01
            相关资源
            最近更新 更多