문제
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.
예시
예를 들어 ANIMAL_INS 테이블이 다음과 같다면
- 이름에 'el'이 들어가는 동물은 Elijah, Ella, Maxwell 2입니다.
- 이 중, 개는 Elijah, Maxwell 2입니다.
따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
풀이
문제: 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.
위 문제의 조건을 하나씩 SQL문으로 바꾸면 다음과 같다.
1. 아이디와 이름을 조회하는 SQL문 => SELECT ANIMAL_ID, NAME
2. 동물 보호소에 들어온 동물 => FROM ANIMAL_INS
3. 이름에 "EL"이 들어가는 => WHERE NAME LIKE '%EL%'
* LIKE 문: 컬럼명 LIKE '조건'
* 와일드 카드 문자
- %: 모든 문자를 대체하는 와일드 카드
'%길동' | 참/거짓 |
'김길동' | 참 |
'제갈길동' | 참 |
'제갈선우길동' | 참 |
'홍길동서남북' | 거짓: '길동'으로 끝나는 문자열이 아님 |
'%길동%' | 참/거짓 |
'제갈길동' | 참 |
'홍길동서남북' | 참 |
'선우길동서남' | 참 |
'선우길서남북' | 거짓: '길동'이 포함되지 않음 |
- _(언더바): 어떤 한 글자를 대체하는 와일드 카드
'홍길_' | 참/거짓 |
'홍길동' | 참 |
'홍길남' | 참 |
'홍길북서' | 거짓: '홍길'+한글자 조건에 맞지 않음 |
'홍길__' | 참/거짓 |
'홍길동' | 거짓: '홍길'+두글자 조건에 맞지 않음 |
'홍길남' | 거짓: '홍길'+두글자 조건에 맞지 않음 |
'홍길북서' | 참 |
- %와 _를 혼용 가능하다
'%길_' | 참/거짓 |
'홍길동' | 참 |
'제갈길동' | 참 |
'홍길동서남북' | 거짓: '길' 다음은 한글자만 허용됨 |
'_길%' | 참/거짓 |
'홍길동' | 참 |
'제갈길동' | 거짓: '길' 앞에는 한글자만 허용 |
'홍길동서남북' | 참 |
4. 개 => WHERE ANIMAL_TYPE = 'Dog'
5. 이름에 "EL"이 들어가는 개 => WHERE NAME LIKE '%EL%' AND ANIMAL_TYPE = 'Dog'
* 이름에 "EL"이 들어가는 개 == 이름에 "EL"이 들어가는 동물 AND 동물타입이 개
따라서 WHERE절에 들어갈 두 조건은 AND로 연결된다.
6. 결과는 이름 순으로 조회 => ORDER BY NAME
따라서 SQL문을 완성하면 다음과 같다.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%EL%'
AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME
'Algorithm Solving > SQL' 카테고리의 다른 글
[programmers] SQL Lv. 2 - 동명 동물 수 찾기 (0) | 2022.10.19 |
---|---|
[programmers] SQL Lv. 2 - 최솟값 구하기 (0) | 2022.10.04 |
[programmers] SQL Lv. 2 - 동물 수 구하기 (0) | 2022.10.04 |
[programmers] SQL Lv. 2 - 중복 제거하기 (0) | 2022.09.29 |
[programmers] SQL Lv. 1 - 이름이 있는 동물의 아이디 (0) | 2022.09.27 |