DB 쿼리문 연습 (2)

구창회·2023년 6월 13일
0

SQL

목록 보기
2/6

배운 쿼리

  • case when then 문
  • row_number 함수, max 함수
  • group by, order by

/*
6. 시카고에서 진행하는 축제중에서 영문 제목이 없는 경우 한글 제목으로 보여주며, 장르가 없는 경우
기타로 표시하며, 홈페이지가 없는 경우 홈페이지 없음" 으로 조회하는 SQL문을 작성해 보세요.
[관련내용] CASE 문
7. 영화 상영관 회사별로 좌석수가 가장 많은 값을 구하고 이를 순서대로 조회하는 SQL문을 작성해
보세요.
[관련내용] row_number(), max() 함수, group by, order by
8. 국가별 영화 정보의 개수를 조회하는 SQL 구문을 작성해 보세요.(단, 국가가 없는 경우는 ‘국가 미상'
으로 처리해 주세요.)
[관련내용] group by, order by, trim() 함수, count() 함수, case 문
9. CGV 극장 중에서 스크린 수가 가장 많은 극장의 순위를 5위까지 조회하는 SQL 문을 작성해 보세요.
[관련내용] order by, row_number, limit
10. 스크린 수가 가장 많은 극장의 이름을 조회하는 SQL문을 작성해 보세요.
*/

-- 6. 시카고에서 진행하는 축제중, 영문 제목이 없는 경우 한글 제목으로 보여주며
-- 장르가 없는 경우 기타로 표시하며, 홈페이가 없는 경우 '홈페이지 없을' 으로 조회하는 sql문 작성

select f.code,
       f.title,

       case when ifNULL(f.eng_title, '') = '' then f.title
           else f.eng_title
        end as eng_title
       ,

       f.continent,
       f.country,
       f.city,

       case when ifnull(f.genre, '') = '' then '기타'
           else f.genre
        end as genre
       ,
       f.important_flag,
       case when ifnull(f.homepage, '') = '' then '홈페이지 없음'
           else f.homepage
        end as homepage
       ,
       f.first_open_date
from festival f

where city like '%시카고%'

;

# alter table festival
# rename column gerne to genre; -- 컬럼 명 변경하기

# 7. 영화 상영관 회사별로 좌석수가 가장 많은 값을 구하고 이를 순서대로 조회하는 SQL문을 작성해
# 보세요.

select biz_name,
       max(seat_count) as max_seat_count,
       row_number() over (order by max(seat_count)) as ranking
from screen
where biz_name is not null and trim(biz_name) <> ''

group by biz_name
order by max_seat_count
;

# 8. 국가별 영화 정보의 개수를 조회하는 SQL 구문을 작성해 보세요.(단, 국가가 없는 경우는 ‘국가 미상'
# 으로 처리해 주세요.)
# [관련내용] group by, order by, trim() 함수, count() 함수, case 문

select
       case when ifnull(m.country, '') = '' then '국가 미상'
        else m.country
        end as country,
     count(title) as movie_count

from movie as m
group by country
order by movie_count
;


# 9. CGV 극장 중에서 스크린 수가 가장 많은 극장의 순위를 5위까지 조회하는 SQL 문을 작성해 보세요.
# [관련내용] order by, row_number, limit

select screen_name,
       screen_count
from screen
where screen_name like '%CGV%'
order by screen_count desc
limit 5
;

# 10. 스크린 수가 가장 많은 극장의 이름을 조회하는 SQL문을 작성해 보세요.

select *
from screen
order by screen_count desc
limit 1
;

select *
from screen
where screen_count in (
    select max(screen_count)
    from screen
    )
;
profile
백엔드 엔지니어 프로 지망생

0개의 댓글