데이터 분석/SQL

[SQL 문법] IN

참치바나나 2020. 10. 31. 09:44

집합에 값이 존재하는지 확인하는 연산자

customer_id의 값이 '1'과 '2'인 값 골라내기

SELECT
	r.customer_id ,
	r.rental_id ,
	r.rental_date
FROM
	rental r
WHERE
	r.customer_id IN (1,2)
ORDER BY
	r.return_date DESC;

이렇게 1, 2 만 골라나옴

같은 표현.

SELECT
	r.customer_id ,
	r.rental_id ,
	r.rental_date
FROM
	rental r
WHERE
	r.customer_id = 1
	OR r.customer_id  = 2
ORDER BY
	r.return_date DESC;

하지만, 가독성과 성능 측면에서 IN이 좋으니 IN을 쓰도록 하자~

 

customer_id의 값에 '1'과 '2'가 없는 값 골라내기

SELECT
	r.customer_id ,
	r.rental_id ,
	r.rental_date
FROM
	rental r
WHERE
	r.customer_id 
	NOT IN (1,2)
ORDER BY
	r.return_date DESC;

역시 같은 표현. 풀어쓰면, '1도 아니고' 그리고 '2도 아닌' 값

SELECT
	r.customer_id ,
	r.rental_id ,
	r.rental_date
FROM
	rental r
WHERE
	r.customer_id <> 1
	AND r.customer_id <> 2
ORDER BY
	r.return_date DESC;

결과는 이렇게

'return_date'가 5월 27인 고객들의 이름 골라내기

먼저 'rental' 테이블에서 'return_date'가 5월 27일인 고객의 id 를 찾아야하겠지?

SELECT
	r.customer_id
FROM
	rental r
WHERE
	CAST(r.rental_date AS date) = '2005-05-27' 

 

그리고 그 고객 id 를 통해 'customer' 테이블에서 이름과 성을 알아내면 되지.

SELECT
	c.first_name ,
	c.last_name
FROM
	customer c
WHERE
	customer_id IN (
	SELECT
		r2.customer_id
	FROM
		rental r2
	WHERE
		CAST(r2.return_date AS date) = '2005-05-27' );

 

'데이터 분석 > SQL' 카테고리의 다른 글

[SQL 문법] LIKE  (0) 2020.10.31
[SQL 문법] BETWEEN  (0) 2020.10.31
[SQL 문법] FETCH  (0) 2020.10.30
[SQL 문법] LIMIT  (0) 2020.10.30
DBeaver 단축키 - 자동 줄 정렬 (prettier)  (0) 2020.10.30