[ORACLE] 프로그래머스 루시와 엘라 찾기
2021. 5. 27.
반응형

https://programmers.co.kr/learn/courses/30/lessons/59046

 

코딩테스트 연습 - 루시와 엘라 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

1. 서론

 

설마 이렇게 푸는 거라고? 생각하게 되는 문제. 물론 이렇게 말고 다른 좋은 방법들도 많더라^^

 

2. 문제 풀이

 

ANIMAL_INS: 동물 보호소에 들어온 동물의 정보를 담은 테이블

테이블 구조

ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE

(각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부)

 

Q. 동물 보호소에 들어온 동물 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty 동물의 아이디와 이름, 성별 중성화 여부를 조회하는 SQL 문을 작성해주세요. (결과는 아이디 순으로 조회)

 

이름이 하나도 아니고 저렇게 많은 걸 그냥 다 쓰라고? 이런 생각이 들었다. 그런데 딱히 다른 생각은 안 나서 정말로 where 문으로 name = "Lucy" or... 이런 식으로 했더니 정말로 됐다. 정답을 맞히고 나서 질문하기에 가보니 역시 더 깔끔한 방법이 나와 있었다.

바로 in을 쓰는 것. in은 특정 값 중에 값이 있는 것을 찾아준다. 이름 중에서 이런 이름들이 있는지를 in으로 표현하는 것이다.

 

3. 코드 설명

 

SELECT animal_id, name, sex_upon_intake
FROM animal_ins
WHERE name = 'Lucy' or name ='Ella' or name = 'Pickle' or name = 'Rogan' or name = 'Sabrina' or name = 'Mitty'
ORDER BY animal_id;

 

정말 노가다로 name을 하나씩 적어줬다. id순으로 정렬도 잊지 않았다.

 

SELECT animal_id, name, sex_upon_intake
FROM animal_ins
WHERE name in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY animal_id;

 

in으로 정리하니까 훨씬 짧고 깔끔하고 직관적이다. 사실 서브 쿼리 말고 in을 써본 건 처음이라 어색 ^^;

 

MySQL에서는 ",' 혼용해도 상관없는데 Oracle에서는 무조건 '(작은 따옴표)만 된다!!!

 

 

 

반응형
myoskin