Skip to content

Latest commit

 

History

History
291 lines (217 loc) · 7.37 KB

연습문제.md

File metadata and controls

291 lines (217 loc) · 7.37 KB

연습문제

문제1번) dvd 렌탈 업체의 dvd 대여가 있었던 날짜를 확인해주세요.

select r.rental_date 
from rental as r

-- 예시 정답
select distinct date(rental_date)
from rental

문제2번) 영화길이가 120분 이상이면서, 대여기간이 4일 이상이 가능한, 영화제목을 알려주세요.

select f.title 
from film as f
where f.length >=120 AND f.rental_duration>=4

-- 예시 정답
select title
from film
where length >=120 and rental_duration>=4

문제3번) 직원의 id 가 2 번인 직원의 id, 이름, 성을 알려주세요

select *
from employees as e
where e.employee_id = 2

# 정답 : Diane Collins

--예시 정답
select staff_id , first_name , last_name
from staff
where staff_id =2

문제4번) 지불 내역 중에서, 지불 내역 번호가 17510 에 해당하는 , 고객의 지출 내역 (amount ) 는 얼마인가요?

select p.amount 
from payment as p 
where p.payment_id = 17510

# 정답 : 5.99

--예시 정답
select amount
from payment
where payment_id = 17510

문제5번) 영화 카테고리 중에서 ,Sci-Fi 카테고리의 카테고리 번호는 몇번인가요?

select c.category_id 
from category as c
where c.name='Sci-Fi'

# 정답 : 14

--예시 정답
select category_id
from category
where name ='Sci-Fi'

문제6번) film 테이블을 활용하여, rating 등급(?) 에 대해서, 몇개의 등급이 있는지 확인해보세요.

-- 1. 등급을 전부 보여주는 방법
select f.rating 
from film as f 
group by f.rating

-- 2. 등급 개수를 전부 더하는 방법
select count(distinct(f.rating))
from film as f 

# 정답 : 5개

--예시 정답
select distinct rating
from film

문제7번) 대여 기간이 (회수 - 대여일) 10일 이상이었던 rental 테이블에 대한 모든 정보를 알려주세요. 단 , 대여기간은 대여일자부터 대여기간으로 포함하여 계산합니다.

select *
from rental as r
where extract(day from r.return_date)-extract(day from r.rental_date)>=10

# 참고 - 타임스탬프 형식 날짜 연산
-- https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions?hl=ko
-- https://docs.microsoft.com/ko-kr/sql/t-sql/functions/datediff-transact-sql?view=sql-server-ver15
-- https://lcs1245.tistory.com/12

-- 예시 정답
select *date(return_date) - date(rental_date) +1 as diff_date
from rental
where date(return_date) - date(rental_date) +1 >=10

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

select c.customer_id, c.first_name, c.last_name, c.email 
from customer as c 
where c.customer_id % 50 = 0

-- 예시 정답
select customer_id, last_name, first_name, email
from customer
where mod(customer_id,50) =0

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

-- 1. 공백을 포함하는 버전 - 제목 길이가 9
select f.title 
from film as f
where length(f.title)=9 

-- 2. 공백을 제거한 버전 - 제목 길이가 8
select f.title 
from film as f
where length(replace(f.title,' ',''))=8

--예시 정답
select length(title), title
from film
where length(title) =8
order by title

문제10번) city 테이블의 city 갯수는 몇개인가요?

select count(distinct(c.city_id))
from city as c

--예시 정답
select count(*)
from city

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

select distinct upper(a.first_name||' '||a.last_name) as Name
from actor as a 

-- 참고
-- https://naon.me/posts/til77

--예시 정답
select distinct upper(first_name ||' '|| last_name)
from actor

문제12번) 고객 중에서, active 상태가 0 인 즉 현재 사용하지 않고 있는 고객의 수를 알려주세요.

select count(distinct(c.customer_id))
from customer as c
where c.active = 0

# 정답 : 15명

--예시 정답
select count(distinct customer_id)
from customer c
where active = 0

문제13번) Customer 테이블을 활용하여, store_id = 1 에 매핑된 고객의 수는 몇 명인지 확인해보세요.

select count(distinct(c.customer_id))
from customer as c 
where c.store_id = 1

#정답 : 326명

--예시 정답
select count(distinct customer_id)
from customer c
where store_id =1

문제14번) rental 테이블을 활용하여, 고객이 return 했던 날짜가 2005년6월20일에 해당했던 rental 의 갯수가 몇개였는지 확인해보세요.

select count(distinct(r.rental_id))
from rental as r
where to_char(r.return_date, 'YYYY-MM-DD')='2005-06-20'

-- 참고 : 타임스탬프 문자열 변환
-- https://m.blog.naver.com/sssang97/222054185948

-- 예시 정답
select count(distinct rental_id)
from rental r
where date(return_date) ='2005-06-20'

문제15번) film 테이블을 활용하여, 2006년에 출시가 되고 rating 이 'G' 등급에 해당하며, 대여기간이 3일에 해당하는 것에 대한 film 테이블의 모든 컬럼을 알려주세요.

select *
from film as f 
where f.release_year = 2006 and f.rating = 'G' and f.rental_duration = 3

--예시 정답
select *
from film
where release_year ='2006' and rental_duration =3 and rating ='G'

문제16번) langugage 테이블에 있는 id, name 컬럼을 확인해보세요.

select l.language_id, l."name" 
from 'language' l

--예시 정답
select language_id , name
from language

문제17번) film 테이블을 활용하여, rental_duration이 7일 이상 대여가 가능한 film 에 대해서 film_id, title, description 컬럼을 확인해보세요.

select f.film_id, f.title, f.description 
from film as f
where f.rental_duration >= 7

--예시 정답
select film_id ,title, description
from film
where rental_duration >= 7

문제18번) film 테이블을 활용하여, rental_duration 대여가 가능한 일자가 3일 또는 5일에 해당하는 film_id, title, desciption 을 확인해주세요.

select f.film_id, f.title, f.description 
from film as f
where f.rental_duration = 3 or f.rental_duration = 5

--예시 정답
select film_id ,title, description
from film
where rental_duration =3 or rental_duration =5

문제19번) Actor 테이블을 이용하여, 이름이 Nick 이거나 성이 Hunt 인 배우의 id 와 이름, 성을 확인해주세요.

select a.actor_id, a.first_name, a.last_name 
from actor as a
where a.first_name = 'Nick' or a.last_name = 'Hunt'

--예시 정답
select actor_id , first_name , last_name
from actor
where first_name = 'Nick' or last_name ='Hunt'

문제20번) Actor 테이블을 이용하여, Actor 테이블의 first_name 컬럼과 last_name 컬럼을, firstname, lastname 으로 컬럼명을 바꿔서 보여주세요.

select a.first_name as firstname, a.last_name as lastname
from actor as a

--예시 정답
select first_name  as firstname, last_name as lastname
from actor