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

miji.lee님의 프로필 이미지
miji.lee

작성한 질문수

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

1번 문제 풀이

개별 쿼리 연결 시

작성

·

202

2

강사님 안녕하세요.

해당 문제 답을 

SELECT city, length(city) length_city

FROM station

ORDER BY length_city, city

LIMIT 1;

SELECT city, length(city) length_city

FROM station

ORDER BY length_city DESC, city

LIMIT 1

라고 UNION 없이 적으셨는데 쿼리가 돌아가서 놀랐어요.

저는 개별 쿼리를 연결하려면 UNION이 꼭 필요하다고 생각했거든요.

그럼 쿼리 연결할 때 UNION이 꼭 필요한 경우는 언제인가요??

그냥 세미콜론 하나로 연결 가능하다면 UNION은 왜 존재하는지 혼란스럽습니다 ;_;

답변 3

1

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

1. 이 문제에서 UNION 대신 세미콜론을 사용한 이유는 정렬을 해야하기 때문입니다. 
UNION과 ORDER BY 절이 같이 실행이 되지 않기 때문에 원하는 결과를 얻지 못할 수 있습니다.

2. 세미콜론으로 두 결과값을 연결해서 출력하는 방법은 서브쿼리 안에서는 사용 불가합니다. 
만약 이 문제의 쿼리 전체가 서브쿼리 안에 들어가야 한다면 UNION, 또는 다른 방법으로 풀어야 합니다. 

1

저도 궁금합니다 오히려 union 해주면 안돌아가네요

0

혹시 여기에 질문을 드려도 되는지 몰라 한번 글 남겨봅니다.

그러면 혹시 아래와 같이 (  )를 쳐서 두개를 구분하고, 

UNION으로 묶어도 되는 걸까요?

답은 잘 나오는 것 같더라고요!

 

(SELECT CITY, LENGTH(CITY)

FROM STATION

ORDER BY LENGTH(CITY) DESC, CITY

LIMIT 1)

 

UNION

 

(SELECT CITY, LENGTH(CITY)

FROM STATION

ORDER BY LENGTH(CITY) ASC, CITY

LIMIT 1);

miji.lee님의 프로필 이미지
miji.lee

작성한 질문수

질문하기