프로그래머스 SQL 코딩 테스트 select 문제 풀이
프로그래머스 SQL 코딩 테스트 select 문제 풀이
SQL 연습하신다고 프로그래머스 SQL 풀어보시는 분들이 많이 계시네요.
오늘부터 하나씩 풀이를 써볼까 합니다.
자자, 그럼 레고레고~!!!
select 모든 레코드 조회하기
첫번째는 모든레코드를 조회하는 문제네요.
우선 테이블명은 ANIMAL_INS 입니다. 동물 보호소에 들어온 동물의 정보를 담은 테이블 이구요.
문제 설명 바로아래 나오는곳 보면 컬럼 목록이 있죠.
옆에 type은 해당 컬럼의 데이터 타입 입니다. 여기서는 varchar 와 datetime만 사용을 하였네요.
nullable 부분은 해당 컬럼에 값이 없음을 뜻하는 NULL 데이터가 들어갈수 있는지 여부를 말하는겁니다. NAME 이라는 컬럼만 NULL이 들어갈 수 있습니다. 나머지 컬럼에는 NULL이 들어가면 안된다는거죠.
그리고, 아래에 문제가 다음과 같이 나오네요.
"동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해 주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다."
모든 정보를 출력하라고 하니, SELECT절에 * 가 들어가면 될것 같구요.
ANIMAL_ID 순으로 조회하라고 하니 ORDER BY 를 쓰면 되겠죠.
정답은 다음과 같습니다.
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
이거 말고, 이렇게도 해보니 정답으로 처리가 됩니다.
SELECT *
FROM ANIMAL_INS
ORDER BY 1;
ORDER BY에 들어가는 숫자는 SELECT절에서 나오는 컬럼의 순서를 의미 합니다. ANIMAL_ID가 ANIMAL_INS 테이블의 첫번째 컬럼이니 제일 먼저 출력이 되겠죠. 그래서 1을 써주는 거죠.
관련해서 더 공부를 하고 싶으신 분은 아래 링크를 이용하세요.
2020.03.19 - [Database/sql 강의] - sql 독학 강의 # select를 잘 이용하는 방법(1), 2편 -sTricky
select 역순으로 정렬하기
다음 문제는 역순으로 정렬 하기네요.
간단합니다.
아까 첫번째 문제와 똑같은 테이블인 ANIMAL_INS 테이블을 이용합니다.
그리고 이번에는 모든 컬럼을 출력하는것이 아니라, NAME, DATETIME만 출력을 하라그러네요.
또, ANIMAL_ID의 역순으로 정렬 해야 합니다.
그러기 위해서는 ORDER BY 절에 역순(내림차순)을 의미하는 DESC를 붙여주면 되겠죠.
간단한거닌깐 바로 정답을 확인 해볼께요.
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
위와 같이 표현 할 수 있습니다.
여기서는 첫번째 문제처럼 ORDER BY 절에 1을 써서 ORDER BY 1 DESC 라고 표현 할 수 있을까요?
정답은???? 땡! 안됩니다.
여기선 SELECT 절에 ANIMAL_ID가 나오지 않고 있기 때문이죠. 여기서 1DESC라고 하면 ORDER BY NAME DESC와 같은 의미가 되게 됩니다. 꼭 기억하세요.
select 아픈 동물 찾기
세번째 문제를 보겠습니다.
이번에도 똑같은 ANIMAL_INS 테이블을 이용하구요.
아래 결과 예시는 보면 ANIMAL_ID와 NAME이 출력 되는 것을 확인 할 수 있습니다.
그럼 이젠 아프다는것을 알아봐야 겠죠.
아픈지 안아픈지를 알기 위해서는 해당 동물의보호 시작시 상태를 알아 보면 됩니다.
바로 <예시>를 보면 INTAKE__CONDITION 이라는 컬럼이 있죠? 해당 컬럼의 값을 보면 Normal, Sick, Aged, Sick 이라고 값이 들어가 있습니다. Sick이라는 상태가 당연히 아픈 상태를 이야기 하는것이겠죠.
그리고 문제를 잘 읽어보면 아이디 순으로 조회를 하라고 되어 있습니다.
그럼, 결론은 INTAKE_CONDITION이 Sick인 동물을 WHERE 절을 이용해서 찾고, SELECT 절에서는 ANIMAL_ID, NAME이 출력 되도록 하고, ORDER BY 절에서 ANIMAL_ID 순으로 정렬 되도록 SQL을 작성 해보면 되겠습니다.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID;
위와같이 SQL을 입력 하시면 되겠습니다.
아직 까지 정말 간단하죠?
다음 문제는 다음편에서 계속 이어가도록 하겠습니다.
#다음편 보러가기#
https://stricky.tistory.com/507
#SQL을 좀 더 깊게 공부 하고 싶으시면 제가 쓴 mysql 입문서도 참고 해보시길 바랍니다.
현재 크몽에서 판매를 하고 있습니다.#
자, 오늘 세 문제를 풀어봤습니다. 다음 시간에 이어서 계속 진행 해볼께요.
감사합니다.
by.sTricky