SQL 문제

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

빙수빈수 2023. 9. 23. 13:30

https://school.programmers.co.kr/learn/courses/30/lessons/131112

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제]

다음은 식품공장의 정보를 담은 FOOD_FACTORY 테이블입니다. FOOD_FACTORY 테이블은 다음과 같으며 FACTORY_ID, FACTORY_NAME, ADDRESS, TLNO는 각각 공장 ID, 공장 이름, 주소, 전화번호를 의미합니다.

 

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

 

 FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.

 

[코드]

use programmers;

DROP TABLE IF EXISTS FOOD_FACTORY;
# 테이블 생성
create table FOOD_FACTORY (
	FACTORY_ID VARCHAR(10) NOT NULL PRIMARY KEY,
    FACTORY_NAME VARCHAR(10) NOT NULL,
    ADDRESS VARCHAR(100) NOT NULL,
    TLNO VARCHAR(20)
);

# 값 삽입(일부)
INSERT INTO FOOD_FACTORY VALUES ('FT19980003','(주)맛있는라면','강원도 정선군 남면 칠현로 679','033-431-3122');
INSERT INTO FOOD_FACTORY VALUES ('FT19980004','(주)맛있는기름','경기도 평택시 포승읍 포승공단순환로 245	','031-651-2410');
INSERT INTO FOOD_FACTORY VALUES ('FT20010001','(주)맛있는소스','경상북도 구미시 1공단로7길 58-11','054-231-2121');
INSERT INTO FOOD_FACTORY VALUES ('FT20010002','(주)맛있는통조림','전라남도 영암군 미암면 곤미현로 1336','061-341-5210');
INSERT INTO FOOD_FACTORY VALUES ('FT20100001','(주)맛있는차','전라남도 장성군 서삼면 장산리 233-1번지	','061-661-1420');
INSERT INTO FOOD_FACTORY VALUES ('FT20100002','(주)맛있는김치','충청남도 아산시 탕정면 탕정면로 485	','041-241-5421');
INSERT INTO FOOD_FACTORY VALUES ('FT20100003','(주)맛있는음료','강원도 원주시 문막읍 문막공단길 154','033-232-7630');

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

 

[고찰]

 이번 문제는 SELECT 문의 WHERE 절에 LIKE를 사용하여 해결하는 문제였다. LIKE는 %와 _를 사용하여 문자열의 조건을 줄 수 있는데 %는 0개 이상의 문자를 의미하고, _는 1개의 문자를 의미한다. 예를 들어 %강원도는 문자열이 강원도로 끝나는 가변길이의 문자열을 의미하고, 강원도__는 맨 앞이 강원도로 시작하는 5글자의 문자열을 의미한다.

 LIKE를 사용해야 한다는 것만 캐치하면 쉽게 해결할 수 있는 문제였다.