SQL not a single group group function error

前端 未结 4 674
生来不讨喜
生来不讨喜 2020-12-19 10:22

I am having a hard time getting my oracle developer query to output correctly. When I have the avg function in it, it gives me not a single group group error. When I take it

相关标签:
4条回答
  • 2020-12-19 10:47

    When you include an aggregate function (like avg, sum) in your query, you must group by all columns you aren't aggregating.

    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
    
    0 讨论(0)
  • 2020-12-19 11:00

    You are using an AGGREGATION function and in order to do so you have to group all the data that would have to be aggregated.

    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;
    
    0 讨论(0)
  • 2020-12-19 11:00

    For your newly added fields, you didn't used group by, hence you are getting this error, so by including that newly added fields to group by you will resolve this error and group all the data that would have to be aggregated.

    0 讨论(0)
  • 2020-12-19 11:03
    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;
    

    OR

    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;
    

    Note
    Whenever an aggregate function(SUM, COUNT, AVG, MIN, MAX, ..) is used in SELECT all the other column in that SELECT that are not contained in any aggregate function must come in GROUP BY clause

    0 讨论(0)
提交回复
热议问题