-
[프로그래머스 MySQL,Oracle] - 보호소에서 중성화한 동물Data Engineering/MySQL & Oracle 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 문제를 찾아봐야겠다.