>

문제는 쿼리를 실행할 때보다 큼 문을 사용할 때 계산기에서 얻은 결과에서 잘못된 평균 수학을 다시받는 것입니다.

무슨 일이 일어나고 있는지는 평균이 발생할 때 where 절 값보다 높은 값만 사용합니다. 내가 원하는 것은 카테고리를 그룹화하여 해당 카테고리의 모든 가격의 평균을 얻은 다음 값보다 높은 가격 만 표시하는 것입니다.

이 버전은 의문의 여지없이 카테고리를 직접보고 있기 때문에 작동합니다.

SELECT CategoryID, AVG(Price)
FROM Products
WHERE CategoryID="3"
GROUP BY CategoryID

반환 된 데이터

CategoryID  AVG(Price)
3           25.16

문제가있는 버전입니다.

SELECT CategoryID, AVG(Price)
FROM Products
WHERE Price > 30
GROUP BY CategoryID;

반환 된 데이터

CategoryID  AVG(Price)
1           154.75
2           41.95
3           51.3575
4           38.300000000000004
5           35.625
6           73.14750000000001
7           49.3
8           46.75


  • 답변 # 1

    having 사용

    SELECT CategoryID, AVG(Price)
    FROM Products
    GROUP BY CategoryID
    having AVG(Price)>x
    
    

    동작은 그룹 필터이므로 여기 대신에 위치해야합니다

  • 답변 # 2

    having  - where 사용  30 개가 넘는 평균 가격을 제공합니다.

    그래요 :

    SELECT CategoryID, AVG(Price)
    FROM Products
    GROUP BY CategoryID
    having AVG(Price) > 30
    
    

  • 답변 # 3

    이것을 시도하십시오-

    SELECT CategoryID, AVG(Price)
    FROM Products
    --WHERE Price > 30
    GROUP BY CategoryID;
    HAVING AVG(Price) > 30
    
    

  • 답변 # 4

    보통 당신은 HAVING 를 사용합니다   GROUP BY 에 의해 형성된 그룹 중에서 선택할 키워드 . 이 HAVING 에서 조항을 사용하면 여러 기준을 모두 사용하여 그룹에서 선택할 수 있습니다.

    SELECT CategoryID, AVG(Price)
    FROM Products
    GROUP BY CategoryID
    HAVING AVG(Price) > x
    
    

  • 답변 # 5

    HAVING 를 사용해야합니다  이 경우 와이즈 비즈   HAVING 동안집계(평균과 같은) 필드를 필터링 할 수 있습니다  유휴 데이터의 실제 값으로 만 제한합니다. 이것을 시도하십시오 :

    WHERE
    
    

    SELECT CategoryID, AVG(Price) FROM Products GROUP BY CategoryID HAVING AVG(Price) > 30 에 대한 좋은 튜토리얼이 있습니다.  vs 와이즈 비즈     

    HAVING

  • 이전 python - 정기적 인 런타임 (분)을 사용할 때 내 오류는 25이지만 런타임 로그를 가져 오면 (정상적으로) 내 오류는 03입니까?
  • 다음 r - 오류 - ggplot2 및 datatable에 대한 패키지 또는 네임 스페이스로드에 실패했습니다