[SQL] 제로베이스 - 생각대로 SQL 1 풀이 (8, 9, 10, 11번)

Summer·2021년 8월 22일
0

SQL

목록 보기
7/8
post-thumbnail
제로베이스 SQL 완주반 예제 중 풀이를 남겨두고 싶은 문제 몇 가지
활용 데이터셋 : dvdrental (sql sample data)

🔴🟠🟡🟢

🔴

[8].

고객의 id 가 50,100,150 ..등 50번의 배수에 해당하는 고객들에 대해서,
회원 가입 감사 이벤트를 진행하려고합니다.
고객 아이디가 50번 배수인 아이디와, 고객의 이름 (성, 이름)과 이메일에 대해서 확인해주세요.

#키워드
(1). (성, 이름)
(2). 배수

select
	customer_id
   	 ,last_name ||', '|| first_name as fullname
   	 ,email
   	 ,mod(customer_id, 50) as mod_50
from
	custmoer
where
	mod(customer_id, 50) = 0
;

(1). (성, 이름)

first_name / last_name으로 구성된 컬럼을 (성, 이름) 형태로 변경하기 위해서는 '|| ||' 형태를 사용한다.

last_name || ', '|| fisrt_name 은 last_name 컬럼과 first_name 컬럼을 ', ' 로 이어서 새로운 컬럼을 만들겠다는 뜻이다.
이와 같이 새롭게 만들어진 컬럼의 이름은 as 00의 형식으로 지정해준다. (ex) as fullname)

(2). 배수

mod(x, y) : x를 y로 나눈 후 나머지값을 산출하는 함수다.

따라서, 50의 배수를 구하고자 하면 mod(customer_id, 50) = 0 이라는 조건을 걸어주면 된다.

🟠

[9].

영화 제목의 길이가 8글자인, 영화 제목 리스트를 나열해주세요.

#키워드
(1). 영화 제목의 길이가 8글자

select
	title
from
	film
where
	char_length(title) = 8
;

(1). 영화 제목의 길이가 8글자

char_length(x) : 글자 수를 세는 함수

처음에 문제를 보고 당황했는데, char_length 함수를 알고 있으면 간단히 풀 수 있는 문제!

🟡

[10].

city 테이블의 city 갯수는 몇개인가요?

select
	count{distinct(city ||', '|| country_id)}
from
	city
;

-> distinct 함수는 항상 select 바로 뒤에 붙지만 count 함수를 쓰는 경우에는 count 안으로 들어간다!

🟢

[11].

영화배우의 이름 (이름+' '+성) 에 대해서, 대문자로 이름을 보여주세요. 단 고객의 이름이 동일한 사람이 있다면, 중복 제거하고, 알려주세요.

#키워드
(1). 대문자

select
	distinct upper(first_name ||', '|| last_name)
from
	actor
;

(1). 대문자

upper : 대문자 변환 함수
lower : 소문자 변환 함수

이 역시 upper와 lower 함수를 알고 있으면 쉽게 풀 수 있는 문제다.
sql이라고 해서 sql만의 문법만 사용되는 게 아니라, 엑셀 등에서 자주 활용되는 함수도 많이 등장하니 다방면을 숙지하고 있으면 문제를 풀 수 있는 스펙트럼이 훨씬 넓어질 것 같다.

profile
잠시 쉬어가며 SQL을 공부중인 판교 비개발자의 하루

0개의 댓글