Data Engineering/MySQL & Oracle

[프로그래머스 MySQL,Oracle] - 보호소에서 중성화한 동물

ddoddo201 2021. 6. 28. 17:26

 

 

 

[프로그래머스 JOIN - 보호소에서 중성화한 동물]

 

 

(MySQL)

*방법: ANIMAL_INS 기준으로 조인을 해주고, 중성화 여부가 다른 컬럼을 선택한다.

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID=B.ANIMAL_ID
WHERE A.SEX_UPON_INTAKE!=B.SEX_UPON_OUTCOME
ORDER BY A.ANIMAL_ID

 

 

(Oracle - JOIN 사용)

*사실 Oracle과 MySql이 많은 차이가 있는 것은 아니다.

 그래서 Oracle에서 (+) 조인 조건을 한번 사용해보았다.

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS A, ANIMAL_OUTS B
WHERE A.ANIMAL_ID=B.ANIMAL_ID(+) 
    AND A.SEX_UPON_INTAKE!=B.SEX_UPON_OUTCOME
ORDER BY A.ANIMAL_ID

 

(Oracle - INTERSECT 사용)

SELECT ANIMAL_ID, ANIMAL_TYPE, NAME
FROM ANIMAL_INS
WHERE SEX_UPON_INTAKE LIKE 'Intact%'
INTERSECT
SELECT ANIMAL_ID, ANIMAL_TYPE, NAME
FROM ANIMAL_OUTS
WHERE SEX_UPON_OUTCOME NOT LIKE 'Intact%'

 

 

<공부>

 

📍 Oracle

UNION: 두 테이블의 합집합(중복 허용 안함)

UNION ALL: 두 테이블의 합집합(중복 허용)

INTERSECT: 양쪽 테이블에 공통된 행만 출력한다.

MINUS: 첫번째 테이블 기준으로 두번째 테이블에 있는 행을 제외한다.

 

 

LIKE : 특정 문자가 포함되어 있는 값을 포함할 경우 사용한다.

ex) LIKE '%A' : A로 끝나는 모든 단어

ex) LIKE 'A%' : A로 시작하는 모든 단어

ex) LIKE '%A%' : A를 포함하는 단어

 

 

 

 

 

프로그래머스의 JOIN 문제는 문법만 알면 풀기 쉬운 편이다.

코딩 테스트에 대비해서, 조금 더 어려운 JOIN 문제를 찾아봐야겠다.