집합연산 UNION / UNION ALL

중복된 값을 제거하는 것이 UNION의 default

만약에 중복되는 값이 없는 테이블 연산이면 UNION ALL을 사용하는 것이 좋다

 

주의할 점 : A UNION B 를 수행할 때 A에는 ORDER BY 사용 못함

 

로그인 아이디 연락처 주소
A 010-1111-1111 광진구 자양동
B 010-2222-2222 송파구 석촌동
로그인 아이디 연락처 주소
C 010-3333-3333 분당구 판교동
B 010-2222-2222 송파구 석촌동

 

UNION  결과 => 중복 제거

로그인 아이디 연락처 주소
A 010-1111-1111 광진구 자양동
B 010-2222-2222 송파구 석촌동
C 010-3333-3333 분당구 판교동

 

UNION ALL 결과 => 중복 허용

로그인 아이디 연락처 주소
A 010-1111-1111 광진구 자양동
B 010-2222-2222 송파구 석촌동
C 010-3333-3333 분당구 판교동
B 010-2222-2222 송파구 석촌동

 

JOIN 연산 사용 예시

-- product 테이블에서 Price가 5이하 또는 200 이상인 상품들만 출력하세요

SELECT *
FROM Products
WHERE price <= 5

UNION

SELECT *
FROM Products
WHERE price >= 200

 

 

FULL OUTER JOIN (MySQL에선 지원 안되지만 LEFT와 RIGHT를 사용해서 구현)

 

고객정보는 있지만 주문 정보는 없을 때

주문 정보는 있지만 고객 정보는 없을 때 를 모두 조회하고 싶다면 LEFT 조인과 RIGHT 조인을 UNION 해준다

SELECT *
FROM Customers
	LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
    
UNION
  
SELECT *
FROM Customers
	RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID

 

 


 

HACKER RANK

 

정답 확인은 더보기 클릭

 

1. Symmetric Pairs - https://www.hackerrank.com/challenges/symmetric-pairs/problem?h_r=internal-search

더보기
/*
20 20 (2번 나와야함 모두)
UNION
20 21
22 23
*/

-- 20 20 케이스 도출
SELECT x, y
FROM Functions
WHERE x = y
GROUP BY x, y
HAVING count(*) = 2

UNION

SELECT a.x
		, a.y
FROM Functions AS a
		INNER JOIN Functions AS b ON a.x = b.y AND a.y = b.x
WHERE a.x < a.y
ORDER BY x

 


 

< 기초 SQL 시리즈 >

 

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 1부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 2부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 3부 完

 

< 중급 SQL 시리즈 >

 

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 1부

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 2부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 3부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 4부 完

 

 

이 포스팅은 해당 강좌를 수강하며 작성하였습니다.

https://www.inflearn.com/course/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EC%A4%91%EA%B8%89-SQL

 

[백문이불여일타] 데이터 분석을 위한 중급 SQL - 인프런

SQL 중급 이론을 배우고, 실습 문제를 함께 풀어봅니다. 초급 중급이상 데이터베이스 데이터베이스 데이터 분석 SQL 데이터 분석 온라인 강의 업무에 SQL을 바로 적용할 수 있고 SQL 코딩 테스트도 �

www.inflearn.com

 

+ Recent posts