Database/프로그래머스SQL

프로그래머스 SQL 코딩 테스트 select 문제 풀이

sTricky 2021. 9. 9. 13:15

프로그래머스 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

 

sql 독학 강의 # select를 잘 이용하는 방법(1), 2편 -sTricky

sql 독학 강의 # select를 잘 이용하는 방법(1), 2편 컨텐츠 index 1. SQL select 문장을 사용하기 위한 용어 정리 2.DESC 사용하기 3. 원하는 데이터만 select 하기 4. 표현식 (Expression) 사용하기 5...

stricky.tistory.com

 

 

 

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 코딩테스트 select 문제 풀이 #2

프로그래머스 SQL 코딩테스트 select 문제 풀이 #2 지난 1편에 이어서, 이번에도 프로그래머스 SQL 문제를 몇문제 풀어보도록 하겠습니다. 2021.09.09 - [Database/프로그래머스SQL] - 프로그래머스 SQL 코딩

stricky.tistory.com

#SQL을 좀 더 깊게 공부 하고 싶으시면 제가 쓴 mysql 입문서도 참고 해보시길 바랍니다.
현재 크몽에서 판매를 하고 있습니다.#

https://kmong.com/gig/312750

 

독학으로 예제 따라 익히는 mysql sql 입문서를 드립니다. | 17000원부터 시작 가능한 총 평점 5점의

19개 총 작업 개수 완료한 총 평점 5점인 database전문가의 취업·투잡, 전자책·노하우, 직무 스킬업 서비스를 7개의 리뷰와 함께 확인해 보세요. 취업·투잡, 전자책·노하우, 직무 스킬업 제공 등 17

kmong.com

 

자, 오늘 세 문제를 풀어봤습니다. 다음 시간에 이어서 계속 진행 해볼께요.
감사합니다.

by.sTricky