• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

복합쿼리 마지막 문제 질문

22.02.04 14:18 작성 조회수 124

0

안녕하세요!
강의 수강 중에 질문이 있어 글 남깁니다.
 
마지막 문제에서 저는
 
SELECT main_category, items.provider, AVG(items.dis_price), AVG(items.discount_percent), COUNT(*) 
        FROM items
        INNER JOIN ranking ON items.item_code = ranking.item_code
        GROUP BY items.provider 
        HAVING COUNT(*) >= 20
        ORDER BY main_category, COUNT(*) DESC;
 
이렇게 판매자별로만 그룹을 지정해서 문제를 접근했었는데요. 
 
강사님께서 작성해주신 아래 쿼리문을 기준으로 다시 돌려보니 결과값이 상이하게 나와서 궁금해졌습니다.
 
    SELECT ranking.main_category, items.provider, AVG(items.dis_price), AVG(items.discount_percent), COUNT(*)
        FROM items
        INNER JOIN ranking ON items.item_code = ranking.item_code
        GROUP BY items.provider, ranking.main_category
        HAVING COUNT(*) >= 20;
 
그룹핑을 다르게 했으니 결과값은 상이하게 나오는게 당연하겠지만...
왜 상이하게 나오는지에 대해 바로 이해가 잘 되지 않아서요 ㅠㅠ..
 
제 추측으로는 그룹핑을 provider라는 하나의 기준으로만 시키는 바람에,
다른 메인 카테고리에 있는 똑같은 값들이 ALL에 다 포함되어서 출력되어서 그런것 아닐까 싶은데... 
제가 이해한게 맞는지 모르겠습니다 ㅠㅠ!
 
<질문자 코드 결과>
 
 
<강의 코드 결과>
 
 
 
 
 

답변 1

답변을 작성해보세요.

0

네 맞는 것 같습니다.

그룹핑이 다르니까요. provider 및 main_cateogry 별로 그룹핑한것과 provider 만으로 그룹핑한 것은 이런 설명 그 자체로 그룹핑이 다른 것이니까요. 

GROUP BY items.provider, ranking.main_category