UNION 해커랭크 문제풀이(난이도 상)
456
작성한 질문수 8
SELECT *
FROM Functions
WHERE x = y
GROUP BY x
HAVING COUNT(x) = 2
UNION
SELECT p1.x, p1.y
FROM Functions AS p1
INNER JOIN Functions AS p2 ON (p1.x = p2.y AND p2.x = p1.y)
WHERE p1.x < p1.y
ORDER BY x처음에 ORDER BY p1.x으로 작성했었는데 오류가 나더라고요. UNION 위에 작성한 쿼리를 Alias 없이 작성해서 안 되는 거죠..?
이렇게 Alias가 없는 쿼리와 있는 쿼리를 같이 쓸 때는 ORDER BY 뒤에 Alias를 사용하지 않는 컬럼명을 붙여준다고 생각하면 맞을까요?
답변 1
2
두 번째 쿼리의 select 절에서 테이블명(p1)을 붙인 이유는, inner join을 통해 p1과 p2가 합쳐졌는데 두 테이블에 동일한 이름(x, y)을 가진 컬럼이 있기 때문에 그냥 x만 쓰면 p1의 x 컬럼을 가져오라는 건지, p2의 x 컬럼을 가져오라는 건지 구분이 되지 않기 때문입니다.
위치를 정확히 명시해 준 것일 뿐이지, 컬럼 이름 자체가 p1.x 인 것이 아닙니다. 컬럼명은 그냥 x, y입니다.
그리고 union을 통해 첫 번째 쿼리의 output과 합쳐져 x, y 컬럼을 가진 새로운 테이블이 만들어 집니다.
order by는 이 새로운 테이블에 정렬 명령을 하는 것인데, 여기에는 더 이상 p1이라는 테이블이 없으므로 p1.x라고 쓰면 인식하지 못합니다.
리트코드 1280. Students and Examinations
0
77
3
16강 LEFT JOIN 리트코드 (183. Customers Who Never Order) 관련 질문
0
90
2
African Cities 문제관련 질문
0
57
1
SQL 코딩테스트 질문
0
211
1
HACKER RANK에서 문제찾기
0
100
2
강의 자료 다운로드
0
91
2
Asian population 문제가 없어요
0
81
2
INNER JOIN 에서 A.키 쓸때 빨간 색 나오고 'dause'
0
70
2
별칭 관련해서 질문 있습니다.
0
81
2
rising temperature 문제 질문
0
99
2
해커랭크 TOP EARNERS 문제 질문
0
102
1
ON 뒤에 질문
0
98
2
INNER JOIN 질문. 강의와 결과값이 다릅니다.
0
201
3
END, 뒤에 * 붙이면 에러가 뜹니다
1
206
2
CustomerID가 중복되서 나타나요
0
236
3
별칭이 전체 테이블을 못 불러와요.
0
145
2
CASE WHEN 쿼리 오류 문의
1
326
3
CASE문제풀이 질문
0
128
1
Customers Who Never Order 풀다가 Alias관련 질문사항
0
139
1
Average Population 질문
0
133
1
Revising Aggregations - The Count Function 질문
0
105
1
Average Population of Each Continent 에대해서 질문
0
194
3
w3schools 에서 쿼리 작성 질문
0
160
1
INNER JOIN 할 때 NULL 값이 안보일 수도 있나요?
0
330
1





