배운 쿼리
/*
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
)
;