문제

막혔다. 어떻게 할까 고민하고 검색하던중에 알량한 내 지식으로는 풀 수 없다고 판단. 답을 검색해보기로 하던중

CASE를 사용핸다는 결과를 도출. 하지만 난 모두와 같은 길을 갈수 없다는 반골이기에 자료를 더 찾은후 다른 방법도 찾아냈다
바로 IF를 사용하는것.

gist.github.com/menthamin/68b247900c0abc178d651717bb113a47

 

프로그래머스 > String, Date > 중성화 여부 파악하기

프로그래머스 > String, Date > 중성화 여부 파악하기. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

선생님 감사합니다

문제

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'Dog' AND NAME LIKE "%el%"
ORDER BY NAME

조건이 두개이므로 처음에 WHERE을 두개를 썼습니다.
WHERE ANIMAL_TYPE = "dog"
WHERE NAME LIKE "%el%" 
하지만 에러가나더군요 혹시나 하는맘에 AND로 이어봤는데 됐습니다.
WHERE을 두개써야 한다면 AND로 붙이면 된다를 알수잇겟네요

문제입니다. 그래서 저는 mysql 여러개 문자열 찾기 라고 검색하니 LIKE IN과 REGEXP가 있길래 REGEXP를 썻는데 정답은 아니라고 하더군요

REGEXP
IN

결과값은 같지만 REGEXP는 틀렷다네요 ㅠㅠ 

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME FROM ANIMAL_INS A 
INNER JOIN ANIMAL_OUTS B 
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE SEX_UPON_INTAKE LIKE "Intact%" 
AND 
(SEX_UPON_OUTCOME LIKE 'Spayed%' OR SEX_UPON_OUTCOME LIKE 'Neutered%')
ORDER BY A.ANIMAL_ID ASC

 

WHERE column이름 = "ABC"	// ABC 찾기
WHERE column이름 LIKE "&ABC"	// 앞에 뭐가오든 ABC로 끝나는 문자찾기
WHERE column이름 LIKE "ABC&"	// 뒤에 뭐가오든 ABC로 시작하는 문자찾기
WHERE column이름 LIKE "%ABC%"	// 앞뒤 상관없이 ABC가 중간에 있는 문자찾기
WHERE column이름 LIKE "A" AND column이름 LIKE "B"	// AND는 여러개 찾을수 있게 해주는 것
WHERE column이름 LIKE "__A"	// 세번째가 A로끝나는 문자 찾기

입양시각구하기 1 과 다른점은
00시부터 23시까지 구해야하는겁니다. 

왜 어렵냐면 해당하는 0개의 건수가 나오더라도 출력결과에 나와야한다는것..

 

 

입양시각구하기 1을 생각으로 만들어본것

이렇게 하면 될거라 생각했는데 hour를 보시면 데이터가 있는것만 나오는것이 틀린겁니다.

 

SET @hour := -1; -- 변수 선언

SELECT (@hour := @hour + 1) as HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23

글 쓴분 말로는 SET -> 변수를 설정하는 명령어

아무튼 시작하자마자 @hour + 1 이 돼서 0부터 @hour < 23 까지 반복문을 돌린다고 한다... 

chanhuiseok.github.io/posts/db-6/

 

[프로그래머스] 입양 시각 구하기(1), (2) (GROUP BY, HAVING, SET)

[프로그래머스] 입양 시각 구하기(1), (2)

chanhuiseok.github.io

 

 

+ Recent posts