강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

데잇걸즈4기_강지은님의 프로필 이미지
데잇걸즈4기_강지은

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 고급 SQL

leetcode 196번 문제의 서브쿼리 풀이에 관해

작성

·

223

1

안녕하세요! 데잇걸즈 4기 강지은입니다!

강의와 실습 둘다 즐겁게 진행하고 있습니다.

아직 서브쿼리 개념이 많이 어색한데요, 특히 WHERE절에 서브쿼리를 넣는 개념이 약간 어렵습니다.TT

(서브쿼리를 보다보니 JOIN이 쉬워보이는 매직...)

강의 듣는 도중에 궁금했던 점들 여쭤보고 싶습니다!

1) 서브쿼리는 주로 from절에 많이 쓰이나요? 

가상의 테이블을 만든다는 것 자체가 활용도가 높아보이는데요,

196번을 where절 안에 서브쿼리 이용하면서 풀때에도 from절에 칼럼이 Email, MIN(Id)로 된 서브쿼리가 있더라구요!

서브쿼리가 중첩되어서 식이 어려워지기는 하는데, 어찌됐든 FROM절에서 서브쿼리가 또 쓰이더라구요!

서브쿼리는 FROM에서 자주쓴다고 이해하면 조금 활용하기 쉬울까요?

그리고 여기서 temp는 무엇을 의미하는지 궁금합니다. 그냥 임시테이블 만들때 as해서 붙이는 개념이라 생각하면 될까요?

2) 그리고 여기서 NOT IN 이 아니라 IN 으로 써서 풀수도 있을까요?

저는 처음에 NOT IN을 활용할 생각을 전혀 못하고, 중복된 애들을 지워야 한다는 생각만 했습니다.

그래서 WHERE절에 서브쿼리를 해서

DELETE A

FROM Person AS A, Person AS B

WHERE A.Id IN (SELECT A.Email

                                 FROM Person AS B WHERE A.Email = B.Email AND A.Id > B.Id)

이런식으로 구조 세워서 풀었었는데 두개의 테이블을 JOIN하지 않고 바로 꺼낸다는 시점에서

뭔가 논리가 잘못됐음을 깨닫고 INNER JOIN으로 풀어버렸어요. TT

혹시 이게 가능할까요?  힌트를 주셨으면 합니다.!!

즐겁고 유익한 강의 정말 감사합니다!

답변 1

0

한예은님의 프로필 이미지
한예은
지식공유자

안녕하세요 지은님! 

1. 서브쿼리는 주로 SELECT 절/ FROM 절/WHERE 절 에서 자주 쓰이고, 그 밖에도  HAVING 절/ORDER BY 절/INSERT 문의VALUES 절/UPDATE 문의 SET 절 등등 다양한 곳에서 활용 가능합니다.

FROM절 서브쿼리는 특정 테이블의 일부를 가져와서 연산하고자 할 때 사용한다고 생각하시면 활용하기 좋으실 거에요! 

또 temp라는 말도 이해하신 것처럼 말그래도 임시로 붙였다는 뜻인데 관용적으로 잘 쓰이는 표현입니다. :)

2. IN으로도 문제를 풀 수 있는데, WHERE절에서 서브쿼리 안에 서브쿼리를 중첩해서 inner join을 활용하여 풀어보는 건 어떤가요? :)

데잇걸즈4기_강지은님의 프로필 이미지
데잇걸즈4기_강지은

작성한 질문수

질문하기