짜라빠빠
247
2020-08-13 10:28:47 작성 2020-08-13 10:29:59 수정됨
4
217

오라클 SQL group by 질문 있습니다.



안녕하세요 오라클 SQL 공부 하고 있는 학생입니다.

group by 부분을 공부중인데 이해가 안가는 부분이 있어 질문 올려봅니다


먼저 order_items 이라는 테이블에 주문 id , 제품 id, 제품의 수량이 적힌 order_id, item_id,quantity 칼럼이 있습니다.


SELECT order_id, sum(quantity)

FROM order_items

GROUP BY order_id

ORDER BY order_Id;

이렇게 한다면 같은 order_id를 같는것끼리의 quantity의 합을 구해줍니다


SELECT order_id, item_id, sum(quantity)

FROM order_items

GROUP BY order_id,item_id

ORDER BY order_Id,item_id;

이렇게 하면 item_id가 같은것 끼리 quantity의 합을 구해줍니다.


여기서 이해가 안되는 부분이 order_id 를 그룹화한거랑 order_id,item_id가 그룹화 한것의 결과가 왜 다르게 나오는지를 잘모르겠습니다.

정확하게는   order_id,item_id를 그룹화 하는데 왜 item_id 기준으로 집계함수가 연산되는지를 잘 모르겠습니다.

order_id,item_id 를 그룹화하면 order_id가 먼저 그룹화되고 item_id 가 그룹화 되는것인지 아니면 따로따로 그룹화가 이뤄지는건지 머릿속에 그려지지가 않습니다.

다른사람들은 당연하게 이해하는걸 전 잘 이해를 못하겠네요ㅠㅠ

긴글 읽어주셔서 감사합니다



0
  • 답변 4

  • 레버리지
    2k
    2020-08-13 10:51:58

    order_id,item_id 를 그룹화하면 order_id가 먼저 그룹화되고 item_id 가 그룹화 되는것인지 아니면 따로따로 그룹화가 이뤄지는건지 머릿속에 그려지지가 않습니다.

    => order_id,item_id 를 그룹화하면 order_id가 먼저 그룹화되고 item_id 가 그룹화 되는것



  • 초보개발자Lv1
    59
    2020-08-13 11:16:58

    고등학교를 예를 들어보면

    선생님이

    1) 학년별로 학생수 조사해.

    1학년 10명

    2학년 11명

    3학년 12명


    2) 학년별, 성별로 조사해.

    1학년 남자 5명 

    1학년 여자 5명

    2학년 남자 6명

    2학년 여자 5명

    3학년 남자 7명

    3학년 여자 5명


    3) 학년별, 성별, 사는지역으로 조사해.

    1학년 남자 성동구 3명

    1학년 남자 동작구 2명

    ......


    대략 설명이 잘되었는지는 모르겠네요.

  • 카루시아
    452
    2020-08-13 11:50:57

    윗분이 잘 설명해 주신 것 같네요.

    설명과 별개로 사족을 달자면, 작성자님이 보고 계신 테이블의 데이터 갯수가 부족하거나 혹은 데이터 내용이 GROUP BY 문을 보는데 있어 어렵다(?)고 생각됩니다.

    테스트 테이블을 만들어서 익숙한 데이터로(윗분이 말씀해주신 것 같은) 넣어서 테스트 해보시길 권해드립니다.

  • 짜라빠빠
    247
    2020-08-13 12:15:11

    답변 감사합니다.

    아직 부족한 부분이 너무 많은거 같네요ㅠㅠ

  • 로그인을 하시면 답변을 등록할 수 있습니다.