프로그래머스 SQL 고득점 Kit - 보호소에서 중성화한 동물

Jinyoung Cheon·2025년 8월 12일
0

코딩테스트

목록 보기
13/25

프로그래머스 SQL 고득점 Kit
https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit

JOIN

problem

관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

code

SELECT OUTS.ANIMAL_ID, OUTS.ANIMAL_TYPE, OUTS.NAME

FROM ANIMAL_OUTS AS OUTS

JOIN ANIMAL_INS  AS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID

WHERE INS.SEX_UPON_INTAKE LIKE '%Intact%'
    AND (OUTS.SEX_UPON_OUTCOME LIKE '%Neutered%' OR OUTS.SEX_UPON_OUTCOME LIKE '%Spayed%')

ORDER BY OUTS.ANIMAL_ID;

note

LIKE를 활용할 수 있다면 어렵지 않은 문제였다.

처음에 작성했던 쿼리는 문제가 많았다.. 여기에 올리기 부끄러울 정도

SELECT OUTS.ANIMAL_ID, OUTS.ANIMAL_TYPE, OUTS.NAME

FROM ANIMAL_OUTS AS OUTS

JOIN ANIMAL_INS AS INS 

ON OUTS.ANIMAL_ID = INS.ANIMAL_ID

HAVING INS.SEX_UPON_INTAKE LIKE %Intac%

WHERE OUTS.SEX_UPON_INTAKE LIKE %Neutured% and 
OUTS.SEX_UPON_INTAKE LIKE %Spayed%

ORDER BY OUTS.ANIMAL_ID;

해당 쿼리의 문제점

  1. 집계 없는 조건을 HAVING 절에 사용

  2. 절 순서 : WHERE -> GROUP BY -> HAVING

    • 진짜 무슨 똥같은 순서로 작성한 쿼리지 😱
  3. LIKE 문법 활용시 따옴표 사용 X

  4. 논리연산자 활용

    • 어떻게 AND를 활용할 수가 있지??

쿼리 공부 다시 열심히 해야겠다 ..

profile
데이터를 향해, 한 걸음씩 천천히.

0개의 댓글