본문 바로가기

Skill Sets/SQL

[SQL] 강원도에 위치한 생산공장 목록 출력하기(프로그래머스/MySQL/Level 1)

SMALL

안녕하세요! 데코입니다!

오늘은 프로그래머스 코딩테스트 연습에 있는 "강원도에 위치한 생산공장 목록 출력하기" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : https://school.programmers.co.kr/learn/courses/30/lessons/131112)

1. 문제 :  강원도에 위치한 생산공장 목록 출력하기(Lv. 1)

2. 문제 설명

다음은 식품공장의 정보를 담은 FOOD_FACTORY 테이블입니다.

 FOOD_FACTORY 테이블은 다음과 같으며

 FACTORY_ID, FACTORY_NAME, ADDRESS, TLNO는 각각 공장 ID, 공장 이름, 주소, 전화번호를 의미합니다.

 

[ 테이블 구조 ]

Column name Type Nullable
FACTORY_ID VARCHAR(10) FALSE
FACTORY_NAME VARCHAR(50) FALSE
ADDRESS VARCHAR(100) FALSE
TLNO VARCHAR(20) TRUE

FOOD_FACTORY 테이블에서 

강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요.

이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.

 

[ 예시 ]

예를 들어 FOOD_FACTORY 테이블이 다음과 같을 때

FACTORY_ID FACTORY_NAME ADDRESS TLNO
FT19980003 (주)맛있는라면 강원도 정선군 남면 칠현로 679 033-431-3122
FT19980004 (주)맛있는기름 경기도 평택시 포승읍 포승공다눈환로 245 031-651-2410
FT20010001 (주)맛있는소스 경상북도 구미시 1공단로7길 58-11 054-231-2121
FT20010002 (주)맛있는통조림 전라남도 영암군 미암면 곤미현로 1336 061-341-5210
FT20100001 (주)맛있는차 전라남도 장성군 서삼면 장산리 233-1번지 061-661-1420
FT20100002 (주)맛있는김치 충청남도 아산시 탕정면 탕정면로 485 041-241-5421
FT20100003 (주)맛있는음료 강원도 원주시 문막읍 문막공단길 154 033-232-7630
FT20100004 (주)맛있는국 강원도 평창군 봉평면 진조길 227-35 033-323-6640
FT20110001 (주)맛있는밥 경기도 화성시 팔탄면 가재리 34번지 031-661-1532
FT20110002 (주)맛있는과자 광주광역시 북구 하서로 222 062-211-7759

SQL을 실행하면 다음과 같이 출력되어야 합니다.

[ 출력 결과 ]

FACTORY_ID FACTORY_NAME ADDRESS
FT19980003 (주)맛있는라면 강원도 정선군 남면 칠현로 679
FT20100003 (주)맛있는음료 강원도 원주시 문막읍 문막공단길 154

 

3. 문제 풀이

# 1안
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY 
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID ASC

 

이번 문제는 1안 한 가지로 작성했습니다!

#  1안 풀이 설명

## [ 문제 접근 설명 ]

이번 문제의 요구사항은 엄청 간단하네요!

 

FOOD_FACTORY 테이블에서 주소를 나타내는 'ADDRESS' 컬럼에 '강원도'가 포함되어 있는 공장을 조회하고 이후 'FACTORY_ID' 컬럼을 기준으로 오름차순 정렬을 통해 조회해주면 됩니다!

 

## [ 1안 쿼리 작성 설명 ]

FOOD_FACTORY의 테이블에 존재하는 컬럼들이 [출력 결과]에 나와 있는 컬럼들과 동일하게

 

" SELECT "를 통해 'FACTORY_ID', 'FACTORY_NAME', 'ADDRESS' 컬럼만을 선택

" WHRER (컬럼) LIKE (조건)" 통해 'ADDRESS' 컬럼에서 '강원도'로 시작하는 데이터 추출

" ORDER BY (컬럼) ASC " 통해 FACTORY_ID 컬럼을 기준으로 오름차순으로 나타나게 쿼리를 작성했습니다!


4. 데코의 문제 풀이 후기

이번 문제는 특정 단어가 포함된 데이터를 조회하는 문제예요!

 

1안에서 나온 LIKE 구문은 제 블로그에서 처음 다뤄보네요!

 

LIKE 구문은 이번 문제처럼 WHERE 절에 주로 사용해요!

% 및 _ 연산자와 함께 사용되어서 위치에 따라 특정 단어가 포함하는지 검색하는 데 사용됩니다.

 

% 및 _ 연산자 위치에 따라 어떻게 검색되는지 이번 문제와 연계해서 예시를 적어볼게요!

  • WHERE ADDRESS LIKE '강원도%' : ADDRESS 컬럼에 '강원도~~' 와 같은 패턴이 있는 데이터 조회
      ex) 강원도 정선군 남면 칠현로 679
  • WHERE ADDRESS LIKE '%강원도' : ADDRESS 컬럼에 '~~강원도' 와 같은 패턴이 있는 데이터 조회
      ex) 대한민국 강원도
  • WHERE ADDRESS LIKE '%강원도%' : ADDRESS 컬럼에 '~~강원도~~'를 포함한 패턴이 있는 데이터 조회
      ex) 강원도 정선군 남면 칠현로 679 / 대한민국 강원도 / 대한민국 강원도 정선군
  • WHERE ADDRESS LIKE '강원도_원%' : ADDRESS 컬럼에 '강원도_원~~' 와 같은 패턴이 있는 데이터 조회
      ex) 강원도 원주시 문막읍 문막공단길 154 ('_'은 공백뿐만 아니라 문자가 "하나" 존재하는 것을 의미)
  • WHERE ADDRESS LIKE '강원도___군%' : ADDRESS 컬럼에 '강원도___군~~' 와 같은 패턴이 있는 데이터 조회
      ex) 강원도 평창 봉평면 진조길 227-35 ('_'은 공백뿐만 아니라 문자가 "하나" 존재하는 것을 의미)

NOT LIKE를 이용하면 패턴이 있는 데이터를 제외하고 조회합니다!

  • WHERE ADDRESS NOT LIKE '%강원도%' : ADDRESS 컬럼에 '~~강원도~~'를 포함한 패턴을 제외하고 데이터 조회
      ex) 강원도 평창군 봉평면 진조길 227-35 (강원도 포함하지 않는 값만 조회)

LIKE 구문에 사용된 '%'과 '_' 연산자에 대해 이해가 되셨나요? 

 

저는 22년 P사 프로젝트에서 LIKE 구문과 '%' 연산자를 많이 이용했었어요!

주로 데이터를 탐색하고 특징을 파악하고 이해하는 단계에서 이용해서 '_' 연산자는 거의 안 쓴 것 같아요!

 

python에서도 str.contains() 함수 많이 이용하는 것과 마찬가지로

정말 많이 이용되는 구문이니까 익혀두시면 SQL 쿼리 작성하실 때 활용하실 것이라고 생각돼요!

 

이번 문제는 특정 단어가 포함된 데이터를 조회하는 문제를 풀어봤습니다!

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분은 그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!
빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!
읽어주셔서 감사해요!

 

또 다른 SQL 문제로 찾아뵐게요! :)

LIST