본문 바로가기
Mysql

프로그래머스 Sql 4단계 1번 보호소에서 중성화한 동물

by NaHyungMin 2020. 12. 21.

문제 : programmers.co.kr/learn/courses/30/lessons/59045

 

코딩테스트 연습 - 보호소에서 중성화한 동물

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

programmers.co.kr

쿼리

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM
(
	SELECT B.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME, A.SEX_UPON_INTAKE
	FROM ANIMAL_INS AS A
	INNER JOIN 
	(
		SELECT ANIMAL_ID
		FROM ANIMAL_INS
	) AS B
	ON A.ANIMAL_ID = B.ANIMAL_ID
	WHERE SEX_UPON_INTAKE LIKE 'Intact%'
)AS A
INNER JOIN ANIMAL_OUTS AS B
ON A.ANIMAL_ID = B.ANIMAL_ID AND A.SEX_UPON_INTAKE <> B.SEX_UPON_OUTCOME

쿼리2

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM
(
	SELECT ANIMAL_ID, ANIMAL_TYPE, NAME, SEX_UPON_INTAKE
	FROM ANIMAL_INS AS A
	WHERE SEX_UPON_INTAKE LIKE 'Intact%'
)AS A
INNER JOIN ANIMAL_OUTS AS B
ON A.ANIMAL_ID = B.ANIMAL_ID AND A.SEX_UPON_INTAKE <> B.SEX_UPON_OUTCOME



SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS AS A
INNER JOIN ANIMAL_OUTS AS B
ON A.ANIMAL_ID = B.ANIMAL_ID AND A.SEX_UPON_INTAKE <> B.SEX_UPON_OUTCOME
WHERE A.SEX_UPON_INTAKE LIKE 'Intact%'

 

2번 쿼리를 묶어논 이유는 내가 자주 안 쓰기 때문에... 데이터가 저장이 얼마 안되는 경우 사용하길 바란다.

데이터가 많은 경우 1번 쿼리도 정보를 미리 빼서 쓰는 형식으로 약간 변경해야 한다.

 

1번 쿼리 만드는 데 소요된 시간 3~5분?? 문제 이해하는데 3분이 걸려서...