inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

데이터 분석 SQL Fundamentals

[서브 쿼리 실습 02 - 5:57] 상관 서브쿼리 관련 질문

해결된 질문

269

khloe

작성한 질문수 4

0

안녕하세요, 강의 너무 잘 듣고 있습니다.

서브 쿼리 실습 -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)값을 가져오는 걸로 이해했는데 아닌 걸까요?

 

감사합니다.

sql postgresql dbms/rdbms

답변 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