Group By 절에 작성하는 컬럼 문의드립니다.
3
8 câu hỏi đã được viết
안녕하세요!
product_id를 집계 기준으로 하는 GROUP BY 구문을 작성할 때, 해당 product_id와 맵핑되는 category_id은 SELECT절에서 max(category_id)으로 처리하는 방식으로 설명해주셨습니다.
혹시 아래처럼 category_id도 GROUP BY에 같이 작성한다면, 어떤 점이 다르며 이슈나 문제가 될만한 상황이 있는지 궁금합니다!
SELECT a.PRODUCT_ID, b.CATEGORY_ID, sum(amount) AS sum_by_prod
FROM nw.ORDER_ITEMS a
JOIN nw.PRODUCTS b ON a.PRODUCT_ID = b.PRODUCT_ID
GROUP BY a.PRODUCT_ID, b.CATEGORY_IDCâu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다.
dhleegarret님, 질문하신 쿼리처럼 product_id와 category_id를 함께 GROUP BY에 작성해도 일반적으로는 문제가 없습니다.
product_id가 항상 하나의 category_id에만 매핑되는 구조라면 아래 두 방식의 결과는 동일합니다.
GROUP BY product_id, category_id
GROUP BY product_id후MAX(category_id)사용
즉, product_id와 category_id가 1:1로 대응된다면 두 컬럼을 함께 그룹화해도 결과 행의 기준은 사실상 상품별로 동일합니다. 강의에서는 집계 대상의 레벨이 product_id라는 점을 명확히 표현하기 위해 category_id를 MAX()로 처리한 것입니다.
다만 하나의 product_id가 여러 category_id에 매핑될 수 있는 데이터라면 결과가 달라질 수 있습니다. 이 경우 GROUP BY product_id, category_id는 상품과 카테고리 조합별로 여러 행을 만들지만, GROUP BY product_id는 상품별로 하나의 그룹만 만들기 때문입니다. 따라서 현재처럼 상품 하나가 하나의 카테고리에만 속한다는 데이터 무결성이 보장된다면 두 방식 모두 사용할 수 있습니다.
관련 내용은 아래 기존 답변에서 자세히 확인하실 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
최신버젼 다운로드
0
77
2
'레벨 유지'의 의미에 대한 질문
0
92
2
date_part
0
105
2
lag/lead offset 관련 질문
0
94
2
join 관련 질문 (inner join, left join)
1
127
2
배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?
0
126
2
Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다
0
83
2
rollup시 null값 매출 라벨링
0
99
2
10. 조인 실습 - 02 관련 질문
0
92
1
조인실습03 - join의 pk-fk join
0
145
2
조인실습03 - join의 pk-fk join
0
104
2
(공유)맥, 스키마 import
0
109
2
sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?
0
162
2
1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?
0
154
2
안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.
0
111
1
섹션5 Group by 실습-01 강의 예제 질문
0
154
2
섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문
0
144
2
섹션2 조인 실습 01 강의 질문
0
163
2
lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.
0
156
1
Dbeaver오류
0
736
2
직원 별 가장 높은 매출
0
142
1
강의순서대로 실습코드순알려주세요.
0
162
1
m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?
0
160
1
rollup
0
111
2

