-
[Solv:프로그래머스] SQL JOIN - 보호소에서 중성화한 동물비전공자 공부일기/:: ALGORITHM 2021. 10. 11. 20:15
문제설명
보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.
내 풀이
구질구질하게 풀었음.
내가 좋아하는(?) not in 쓰는 이중쿼리와 조인문 둘다 쓴 버전SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE 1=1 AND INS.SEX_UPON_INTAKE like 'Intact%' AND OUTS.SEX_UPON_OUTCOME NOT IN (SELECT SEX_UPON_OUTCOME FROM ANIMAL_OUTS WHERE SEX_UPON_OUTCOME LIKE 'Intact%')
다른 사람 풀이
둘 다 똑같음. NOT LIKE를 썼느냐 <>를 썼느냐의 차이
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME FROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS WHERE INS.ANIMAL_ID = OUTS.ANIMAL_ID AND INS.SEX_UPON_INTAKE NOT LIKE OUTS.SEX_UPON_OUTCOME ORDER BY INS.ANIMAL_ID;
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME FROM ANIMAL_INS INS, ANIMAL_OUTS OUTS WHERE INS.ANIMAL_ID = OUTS.ANIMAL_ID and INS.SEX_UPON_INTAKE <> OUTS.SEX_UPON_OUTCOME ORDER BY INS.ANIMAL_ID ASC
OR절 쓰는거 헷갈려서 서브쿼리 썼는데 OR절로 풀었더라면 이렇게
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE 1=1 AND INS.SEX_UPON_INTAKE like 'Intact%' AND (OUTS.SEX_UPON_INTAKE like 'Neutered%' OR OUTS.SEX_UPON_INTAKE like 'Spayed%')
정규식 사용한 버전
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 regexp_like(A.SEX_UPON_INTAKE ,'Intact') and regexp_like(B.SEX_UPON_OUTCOME ,'Spayed|Neutered') order by A.ANIMAL_ID
이것도 맘에들어서 퍼옴
SELECT i.animal_id, i.animal_type, i.name from animal_ins as i inner join animal_outs as o on i.animal_id = o.animal_id where i.SEX_UPON_INTAKE != o.SEX_UPON_OUTCOME and i.SEX_UPON_INTAKE Not like 'Intact' order by i.animal_id
'비전공자 공부일기 > :: ALGORITHM' 카테고리의 다른 글
[알고리즘] 최대공약수 구하기 - 파이썬 (0) 2021.10.20 [Solv:프로그래머스] 그리디 Greedy - 조이스틱 (0) 2021.10.13 [Solv:프로그래머스] SQL JOIN - 오랜 기간 보호한 동물(1) (0) 2021.10.11 [Solv:프로그래머스] 정렬 - 가장 큰 수 파이썬으로 풀기 (0) 2021.10.11 [Solv:프로그래머스] 정렬 - K번째 수 파이썬으로 풀기 (1) 2021.10.11