인프런 커뮤니티 질문&답변

윤지훈님의 프로필 이미지
윤지훈

작성한 질문수

[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]

-------------------------------------------------------------------

복합쿼리 마지막 문제 질문

작성

·

173

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

윤지훈님의 프로필 이미지
윤지훈

작성한 질문수

질문하기