-
문제: 정답: 문제풀이: lv3부터는 JOIN 문제가 많이 나오는 것 같다. 역시 JOIN 문을 사용하여서 테이블을 합쳐주고 나서 조건문 WHERE을 사용하여 ANIMAL_INS에서 없는 아이디를 입력해주면된다. WHERE B.ANIMAL_INS IS NULL 그럼 ANIMAL_OUTS에는 있지만 ANIMAL_INS에선 없는 데이터들이 조회된다. SQL문은 기초를 많이 익혀야하니 다른 사람의 풀이도 참고해보고 유튜브나 기초강의를 들으시는걸 추천한다.
문제: 정답: 문제 풀이: 이 문제도 생각보다 쉽다. JOIN문을 사용해서 테이블을 합치고 WHERE 조건문을 통해서 ANIMAL_INS 의 DATETIME이 ANIMAL_OUTS의 DATETIME보다 더 큰값을 찾아내면 되는 것이다.
문제: 정답: 문제풀이: 입양을 간 동물 중에 보호기간이 가장 긴 동물을 출력하는 문제이다. ANIMAL_INS 와 ANIMAL_OUTS를 JOIN 해주고, 조건문을 통해서 ANIMAL_ID가 같다는 걸 표현해준다. ANIMAL_INS와 ANIMAL_OUTS의 DATETIME을 빼서 ORDER BY를 통해 기간이 큰 순서대로 나열한다. 그럼 다음과 같은 정답이 나온다.
문제: 정답: 문제풀이: LV .3 부터는 LEFT JOIN을 많이 쓰게 되는 거같다. 공통된 컬럼이 존재하기 때문에 A,B로 나타내 주었고, ANIMAL_INS 와 ANIMAL_OUTS의 테이블에서의 차이를 나타내주기위해 WHERE B.DATETIME IS NULL을 주었다. 프로그래머스 SQL은 다른 언어에 비해 쉽지만, 기본이 잘 안다져있으면 구사하기 힘들기 때문에 기본을 익히자
문제: 정답: 정답풀이: 다음 문제는 ANIMAL_TYPE의 수를 구하는 문제이다. COUNT(컬럼명) 을 넣으면 된다. 또한 GROUP BY 를 지정해준다면 조건에 맞게 컬럼의 수를 셀수 있다. 프로그래머스 LV2 이지만 다른 언어와 비교해봤을때 상당히 간단하다.
문제: 정답: 문제풀이: 문제의 조건에서 가장 먼저 들어온 동물의 DATETIME을 알아보기로 되있다. SELECT와 FROM을 통해 원하는 컬럼을 테이블에서 가져오고 ORDER BY를 활용하여 오름차순으로 정렬한다. 또한 LIMIT 1을 지정하며, 가장 먼저 들어온 동물의 시간 정보만 알게끔 지정해준다.
문제설명: 정답: 문제풀이: ANIMAL_ID,NAME 앞에 A가 붙어있는 것은 OUTS와 INS를 구별하기 위함이다. 또한 조인 함수를 이용하여 OUT INS을 붙여주고, WHERE의 ANIMAL_INS의 ANIMAL_ID IS NULL인 조건문을 붙여주면, 정답이 나온다.
문제설명: 문제풀이: 문제 설명: DATETIME 컬럼은 초까지의 시간과 날짜가 나온다. DATE_FORMAT을 통해서 날짜의 일까지 나오게 만들고 AS를 통해서 날짜라는 컬럼을 새로 생성해주면된다.