우당탕탕 개발일지

[SQL] 프로그래머스 JOIN : 보호소에서 중성화한 동물(level 4) - 2회차 복습 완료 본문

SQL

[SQL] 프로그래머스 JOIN : 보호소에서 중성화한 동물(level 4) - 2회차 복습 완료

민아당긴아 2024. 7. 4. 13:00

💡문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/59045

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

💡SQL 코드 설계

보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.

1. 조회: ANIAML_ID, ANIMAL_TYPE, NAME 

2. 조건: SEX_UPON_INTAKE가 중성화X, SEX_UPON_OUTCOME이 중성화O

3. 순서: ANIMAL_ID순으로

 

💡SQL 코드

-- 코드를 입력하세요
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME #, I.SEX_UPON_INTAKE, O.SEX_UPON_OUTCOME
FROM ANIMAL_INS AS I
JOIN ANIMAL_OUTS AS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE
    I.SEX_UPON_INTAKE LIKE "Intact%" AND (O.SEX_UPON_OUTCOME LIKE "Spayed%" OR O.SEX_UPON_OUTCOME LIKE "Neutered%")
ORDER BY I.ANIMAL_ID

 

💡기억할 내용

1. 와일드카드 "%T%"를 쓸 때에는 = 아니고 LIKE를 쓴다!

WHERE
    I.SEX_UPON_INTAKE LIKE "Intact%" AND (O.SEX_UPON_OUTCOME LIKE "Spayed%" OR O.SEX_UPON_OUTCOME LIKE "Neutered%")

2. ID를 기준으로 JOIN해야 하는데 처음에 NAME으로 뒤서 실패함..왜 NAME으로 뒀지..?