DB 쿼리문 연습 (4)

구창회·2023년 6월 13일
0

SQL

목록 보기
4/6

배운 쿼리

  • char_length 함수 : length 함수는 BYTE 길이를 가져온다.
  • rpad 함수
  • substring 함수
    -- substring(str, pos) : str 의 pos 의 위치에서 모든 문자를 읽는다.
    -- substring(str, pos, len) : str 의 pos 의 위치에서 len 개의 문자를 읽는다.
  • wildcard 로 쓰일때의 언더바
  • rpad 함수

/*
16. 전국의 CGV 극장의 이름과 규모를 조회하되 규모는 스크린 수가 5보다 작으면 '소', 5보다
크거나 같고 10보 작으면 '중', 10보다 크거나 같으면 '대'로 표시하는 SQL문을 작성해 주세요.
[관련내용] case 문, like
17. 출신지가 프랑스나 이탈리아 이면서 직업이 촬영이거나 편집인 영화인을 조회하는
SQL문을 작성해 주세요.
[관련내용] and 조건, or 조건, in 조건
18. 2010년 ~ 2020년 기간중 연도별로 상영된 영화의 수를 조회하는 SQL문을 작성해 주세요.
[관련내용] count() 함수, between a and b 구문
19. 한국인 중에서 직업이 배우인 사람의 이름을 조회하되, 개인정보 보호를 위해서 이름
중간에 '*' 처리를 통하여 이름이 전체적으로 노출되지 않도록 처리해 주세요.(단, 이름은
적어도 2개 이상의 문자이고 외자인 경우 성만 표시하며 4자인 경우는 성과 맨 마지막만
보여주며, 그 이상인 이름의 경우는 첫 성만 보여주고 나머지는 마스크(*) 처리해 주세요.)
[관련내용] length()함수, trim()함수, char_length()함수, rpad()함수, substring()함수
20. 한국인 이면서 '배'씨 성을 가진 사람 중에 '준'으로 끝나는 이름을 가진 영화인을 조회하는
SQL문을 작성해 주세요.(이름은 3자인 영확인을 구하세요.)
[관련내용] like 문, 와일드카드 _
*/

# 16. 전국의 CGV 극장의 이름과 규모를 조회하되 규모는 스크린 수가 5보다 작으면 '소', 5보다
# 크거나 같고 10보 작으면 '중', 10보다 크거나 같으면 '대'로 표시하는 SQL문을 작성해 주세요.
# [관련내용] case 문, like

select sido,
       gugun,
       screen_name,
       case when screen_count < 5 then '소'
        when screen_count < 10 then '중'
        else '대'
        end as gyumo,
    screen_count

from screen
where screen_name like '%CGV%'
order by screen_count
;

# 17. 출신지가 프랑스나 이탈리아 이면서 직업이 촬영이거나 편집인 영화인을 조회하는
# SQL문을 작성해 주세요.
# [관련내용] and 조건, or 조건, in 조건

select *
from actor
where country in ('프랑스', '이탈리아') and
      domain in ('촬영', '편집')
;

# 18. 2010년 ~ 2020년 기간중 연도별로 상영된 영화의 수를 조회하는 SQL문을 작성해 주세요.
# [관련내용] count() 함수, between a and b 구문

select pub_year,
       count(*)
from movie
where pub_year between 2010 and 2020
group by pub_year
;


# 19. 한국인 중에서 직업이 배우인 사람의 이름을 조회하되, 개인정보 보호를 위해서 이름
# 중간에 '*' 처리를 통하여 이름이 전체적으로 노출되지 않도록 처리해 주세요.(단, 이름은
# 적어도 2개 이상의 문자이고 외자인 경우 성만 표시하며 4자인 경우는 성과 맨 마지막만
# 보여주며, 그 이상인 이름의 경우는 첫 성만 보여주고 나머지는 마스크(*) 처리해 주세요.)
# [관련내용] length()함수, trim()함수, char_length()함수, rpad()함수, substring()함수

select name,
       CASE
        WHEN CHAR_LENGTH(TRIM(name)) = 2 THEN CONCAT(SUBSTRING(name, 1, 1), '*')
        WHEN CHAR_LENGTH(TRIM(name)) = 3 THEN CONCAT(SUBSTRING(name, 1, 1), '*', SUBSTRING(name, 3, 1))
        WHEN CHAR_LENGTH(TRIM(name)) = 4 THEN CONCAT(SUBSTRING(name, 1, 1), '**', SUBSTRING(name, 4, 1))
        ELSE RPAD(SUBSTRING(name, 1, 1), CHAR_LENGTH(TRIM(name)), '*')
        END AS new_name
from actor
where country = '한국' and
      domain = '배우' and
          CHAR_LENGTH(TRIM(name)) > 1

;


# 20. 한국인 이면서 '배'씨 성을 가진 사람 중에 '준'으로 끝나는 이름을 가진 영화인을 조회하는
# SQL문을 작성해 주세요.(이름은 3자인 영확인을 구하세요.)
# [관련내용] like 문, 와일드카드 _

select *,
       char_length(trim(name))
from actor
where name like '배%준'
;



profile
백엔드 엔지니어 프로 지망생

0개의 댓글