-
[프로그래머스] 강원도에 위치한 생산공장 목록 출력하기코딩테스트 준비/SQL 2024. 10. 6. 15:00
https://school.programmers.co.kr/learn/courses/30/lessons/131112?language=oracle
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.
풀이1
주소가 행정구역만 표시되어 있지 않기 때문에 해당 부분을 염두해두고 문제를 풀어야 한다.
FOOD_FACTORY 테이블 간단한 방법은 LIKE 절을 이용하는 것이다. 부분적으로 일치하는 문자열을 찾을 때 자주 사용된다.
※ %나 _가 LIKE 뒤의 조건 부분에서 가장 먼저 나올 경우 SQL 성능이 매우 나빠진다.
_ : 모든 글자, 한 글자
% : 모든 글자, 여러 글자
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE '강원도%' ORDER BY FACTORY_ID
풀이2
주소를 봤을 때 첫번째 공백이 나오기 전이 행정 구역임을 알 수 있다.
이를 활용해 첫번째 공백 앞까지만 짤라서 강원도인지 확인하는 방법이 있다.
SUBSTR과 INSTR 함수를 활용한다. INSTR함수는 주어진 문자에서 특정 문자의 위치를 추출하는 함수이다.
INSTR 함수로 공백의 첫번째 위치를 반환하고 SUBSTR 함수를 통해 부분 문자열을 구한다.
※ INSTR 함수로 공백 위치를 구하고 바로 SUBSTR로 범위를 잡으면 공백까지 들어가기 때문에 -1을 해준다.
SELECT FACTORY_ID,FACTORY_NAME,ADDRESS FROM FOOD_FACTORY WHERE SUBSTR(ADDRESS,1,INSTR(ADDRESS,' ')-1) = '강원도' -- SUBSTR(문자열, 시작 위치, 끝 위치) ORDER BY FACTORY_ID
'코딩테스트 준비 > SQL' 카테고리의 다른 글
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 Oracle (1) 2024.10.09 [프로그래머스] 상위 n개 레코드 ORACLE SQL (0) 2024.10.07 [프로그래머스] 서울에 위치한 식당 목록 출력하기 ORACLE (4) 2024.10.06 [프로그래머스] 특정 형질을 가지는 대장균 찾기 MYSQL SQL (2) 2024.10.03 [프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 ORACLE SQL (0) 2024.10.01