"집합의 레벨"의 의미
595
작성한 질문수 6
안녕하세요
유익하고 훌륭한 강의 덕분에 쿼리 이해가 일취월장하고 있습니다. 감사합니다.
강사님께서 거듭 강조하시고 중요하다고 지적하신 "집합의 레벨"이 무슨 의미인지 문의드립니다.
group by로 집계하거나 analytic sql로 데이터를 aggregate할 때 "집합의 레벨"이란 표현이 자주 나오는데 어떻게 이해하면 좋을까요?
하나의 행(레코드)가 여러 열(속성)을 가지는 경우에 있어서, 어느 하나의 열을 기준으로 다른 열의 값을 집계할 때, 그 기준이 되는 열을 집계결과의 '집합의 레벨' 이라고 이해하면 될까요?
이전 질문과 같이, 저도 첫 임시테이블(temp_01)에서 group by를 product_id와 category_id 두 열을 기준으로 했습니다. 여기서 첫 임시테이블의 '집합의 레벨'인 product_id이므로 category_id를 또다른 레벨로 두는 것이, 기능상 차이는 없지만 개념상 부적절하다고 생각하면 옳게 이해한 것일까요?
"집합의 레벨"이라는 표현이 모호하게도 들으면 이해되는듯 하면서도 막상 쿼리를 작성할 때 머릿속에 원하는 결과가 흐릿해서 바라는 대로 결과를 얻지 못해 질문드립니다.
답변 1
5
안녕하십니까,
강의가 실력 향상에 도움이 되셨다니, 저도 기쁩니다 ^^
제가 강조해서 설명드리는 '집합의 레벨'은 해당 집합의 특정 컬럼(가공값 포함)으로의 유일성(Unique)이 어떤 레벨이냐를 의미합니다. 여기서 '집합'은 단일 테이블, 또는 조인의 결과, Group by 의 결과, 또는 다른 유형의 데이터 연결 결과등을 의미합니다.
즉 집합의 레벨 변경이라고 설명드리는 부분은 해당 집합의 유일성이 최초에는 특정 컬럼(주로 pk 컬럼 또는 조인 연결컬럼)으로 어떻게 되어 있고, 이들 집합이 연산(조인, group by, 기타 데이터 연결)의 수행 결과 어떻게 유일성이 변화되는지를 의미하는 것입니다.
가령 직원(emp) 테이블은 empno로 unique하며, deptno로 중복(M) 레벨로 데이터가 구성되어 있습니다.
emp 테이블에 group by를 수행하게 되면 해당 연산의 결과는 group by에 명시된 컬럼들 기준으로 unique하게 집합 레벨이 변경이 됩니다.
emp 테이블과 dept 테이블(deptno로 unique한 집합 레벨)을 연결 컬럼을 deptno로 하여 조인을 수행하게 되면 emp 테이블은 조인 연결 컬럼인 deptno로 M, dept 테이블은 조인 연결 컬럼인 deptno로 1이 되므로 emp 테이블의 집합 레벨, 즉 empno로 unique한 집합 레벨은 변경 되지 않습니다. 반면에 dept 테이블의 경우 기존에 deptno로 unique했지만, 조인의 결과로 deptno는 중복(M) 레벨로 변경되게 됩니다. 결국 조인 결과는 조인 연결 컬럼으로 M:1 연결시 M에 해당하는 테이블을 집합 레벨을 그대로 따라가게 됩니다.
이전 질문과 같이, 저도 첫 임시테이블(temp_01)에서 group by를 product_id와 category_id 두 열을 기준으로 했습니다. 여기서 첫 임시테이블의 '집합의 레벨'인 product_id이므로 category_id를 또다른 레벨로 두는 것이, 기능상 차이는 없지만 개념상 부적절하다고 생각하면 옳게 이해한 것일까요?
=> 이건 제가 질문을 잘 이해하지 못했습니다. 1번 답변을 살펴 보시고, 추가적인 질문이 필요하시면 다시 한번 글 부탁드립니다.
감사합니다.
'레벨 유지'의 의미에 대한 질문
0
52
2
date_part
0
55
2
lag/lead offset 관련 질문
0
55
2
join 관련 질문 (inner join, left join)
1
99
2
배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?
0
89
2
Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다
0
53
2
rollup시 null값 매출 라벨링
0
54
2
10. 조인 실습 - 02 관련 질문
0
59
1
조인실습03 - join의 pk-fk join
0
108
2
조인실습03 - join의 pk-fk join
0
68
2
(공유)맥, 스키마 import
0
81
2
sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?
0
137
2
1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?
0
130
2
안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.
0
90
1
섹션5 Group by 실습-01 강의 예제 질문
0
117
2
섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문
0
123
2
섹션2 조인 실습 01 강의 질문
0
133
2
lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.
0
126
1
Dbeaver오류
0
630
2
직원 별 가장 높은 매출
0
118
1
강의순서대로 실습코드순알려주세요.
0
133
1
m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?
0
130
1
rollup
0
91
2
Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.
0
355
2





