DB 쿼리문 연습 (5)

구창회·2023년 6월 13일
0

SQL

목록 보기
5/6

배운 쿼리

  • ceil 함수, floor 함수, round 함수 - 각각 소수점 올림, 버림, 반올림

/*
21. 한국인 이면서 '원'씨 성을 가진 배우를 조회하는 SQL문을 작성해 주세요.
[관련내용] like 문, 와일드카드 %
22. 대전시에 있는 상영관 중에서 좌석 수가 500 ~ 1000 사이인 극장의 이름을 조회하는
SQL문을 작성해 주세요.
[관련내용] between a and b 구문
23. 시도별 상영관의 전체 좌석 수, 최대 좌석 수, 최소 좌석 수, 평균 좌석 수 내용을 조회하는
SQL문을 작성해 주세요.(단, 좌석 수가 0인 상영관은 제외하고, 평균 좌석 수는 소수점 올림으로
처리해 주세요.)
[관련내용] sum ()함수, max() 함수, min() 함수, avg() 함수, ceil() 함수, group by 구문
24. 시도별 평균 좌석수가 900 이상인 상영관을 구하는 SQL문을 작성해 주세요.(다, 시도별 평균
좌석 수는 소수점 2자리까지 반올림해서 표현해 주세요.)
[관련내용] round() 함수, avg() 함수, group by 구문, having 구문
25. 영화인 중에서 생일을 알고 있고, 3월에 태어난 사람 중 직업이 감독인 사람의 한글이름,
영문이름을 조회하여, 출신국가는 한국이면, '국내', 한국이 아니면 '국외'로 표시하는 SQL문을
작성해 주세요.
[관련내용] case 문, length() 함수, trim() 함수, str_to_date() 함수
*/

# 21. 한국인 이면서 '원'씨 성을 가진 배우를 조회하는 SQL문을 작성해 주세요.
# [관련내용] like 문, 와일드카드 %

select *
from actor
where country = '한국' and
      name like '원%'
;

# 22. 대전시에 있는 상영관 중에서 좌석 수가 500 ~ 1000 사이인 극장의 이름을 조회하는
# SQL문을 작성해 주세요.
# [관련내용] between a and b 구문

select screen_name
from screen
where sido = '대전시' and
      seat_count between 500 and 1000
;

# 23. 시도별 상영관의 전체 좌석 수, 최대 좌석 수, 최소 좌석 수, 평균 좌석 수 내용을 조회하는
# SQL문을 작성해 주세요.(단, 좌석 수가 0인 상영관은 제외하고, 평균 좌석 수는 소수점 올림으로
# 처리해 주세요.)

-- 반올림은 round, 올림은 어떻게? -> ceil, 내림은 -> floor
select sum(seat_count) as whole_seat,
       max(seat_count) as max_seat,
       min(seat_count) as min_seat,
       ceiling(avg(seat_count)) as avg_seat
from screen
where seat_count > 0
group by sido
;

# 24. 시도별 평균 좌석수가 900 이상인 상영관을 구하는 SQL문을 작성해 주세요.(다, 시도별 평균
# 좌석 수는 소수점 2자리까지 반올림해서 표현해 주세요.)
# [관련내용] round() 함수, avg() 함수, group by 구문, having 구문

select sido,
       gugun,
       screen_name,
       round(avg(seat_count), 1) as avg_seat_count
from screen
group by sido
having avg_seat_count >= 900
;

# 25. 영화인 중에서 생일을 알고 있고, 3월에 태어난 사람 중 직업이 감독인 사람의 한글이름,
# 영문이름을 조회하여, 출신국가는 한국이면, '국내', 한국이 아니면 '국외'로 표시하는 SQL문을
# 작성해 주세요.
# [관련내용] case 문, length() 함수, trim() 함수, str_to_date() 함수

select name,
       eng_name,
        case
            when country = '한국' then '국내'
            else '국외'
        end as nation,
        birth
from actor
where birth is not null and
      str_to_date(birth, '%Y-%m-%d') is not null and
      month(str_to_date(birth, '%Y-%m-%d')) = 3 and
      domain = '감독'
;
profile
백엔드 엔지니어 프로 지망생

0개의 댓글