[서브 쿼리 실습 02 - 5:57] 상관 서브쿼리 관련 질문
안녕하세요, 강의 너무 잘 듣고 있습니다.
서브 쿼리 실습 -02 강의 5:57에 나오는 부분에서 하나 궁금한 점이 있어서 문의드립니다.

select * from hr.emp_hist_01 a where todate =
(select max(todate) from hr.emp_hist_01 x where x.empno = a.empno);
위 쿼리에서 서브쿼리가 9999-12-31로 단일 값이 나올 것으로 생각했는데,
아래 테이블 12행에 보면 1983-12-24 데이터도 있어서요.
서브쿼리에 group by empno가 없는데 어떻게 각 empno별 max(todate) 값을 가져오는지 궁금합니다.
group by empno가 없으면 그냥 x.empno = a.empno로 조인을 한 뒤 전체 데이터에서 max(todate)값을 가져오는 걸로 이해했는데 아닌 걸까요?
감사합니다.
답변 1
1
안녕하십니까,
적어 주신대로 각 empno별 max(to_date)를 가져오기 때문에 1983-12-24 가 나오게 됩니다.
empno별 max(to_date)를 가져 올 수 있는 이유는 서브 쿼리내의 where x.empno = a.empno
로 메인쿼리와 연결이 되기 때문입니다. 그러니까 메인 쿼리 집합의 레코드 한건씩 서브 쿼리 연결 조건인
where x.empno = a.empno 로
로 서브쿼리와 연결하면서 empno 별 max(to_date)를 계산해 내기 때문입니다.
그러니까 메인 쿼리의 empno 7369 가 서브쿼리의 empno 7369와 연결되어 여러개의 레코드가 있더라도 max(to_date)를 하면 한건 max to_date로 만들어 지게 되므로 별도의 group by 는 필요하지 않습니다. 물론 group by empno를 하셔도 결과는 동일합니다.
감사합니다.
'레벨 유지'의 의미에 대한 질문
0
54
2
date_part
0
56
2
lag/lead offset 관련 질문
0
58
2
join 관련 질문 (inner join, left join)
1
101
2
배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?
0
90
2
Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다
0
54
2
rollup시 null값 매출 라벨링
0
56
2
10. 조인 실습 - 02 관련 질문
0
61
1
조인실습03 - join의 pk-fk join
0
109
2
조인실습03 - join의 pk-fk join
0
69
2
(공유)맥, 스키마 import
0
82
2
sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?
0
138
2
1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?
0
132
2
안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.
0
92
1
섹션5 Group by 실습-01 강의 예제 질문
0
120
2
섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문
0
125
2
섹션2 조인 실습 01 강의 질문
0
134
2
lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.
0
128
1
Dbeaver오류
0
632
2
직원 별 가장 높은 매출
0
119
1
강의순서대로 실습코드순알려주세요.
0
134
1
m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?
0
132
1
rollup
0
91
2
Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.
0
356
2





