본문 바로가기

Database/프로그래머스SQL

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

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

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

지난 1편에 이어서, 이번에도 프로그래머스 SQL 문제를 몇문제 풀어보도록 하겠습니다.

2021.09.09 - [Database/프로그래머스SQL] - 프로그래머스 SQL 코딩 테스트 select 문제 풀이

 

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

프로그래머스 SQL 코딩 테스트 select 문제 풀이 SQL 연습하신다고 프로그래머스 SQL 풀어보시는 분들이 많이 계시네요. 오늘부터 하나씩 풀이를 써볼까 합니다. 자자, 그럼 레고레고~!!! select 모든

stricky.tistory.com


도움이 되셨는지 모르겠습니다.
SQL은 어렵지 않아요, 차근 차근 따라오시면 하실 수 있습니다.
그럼 시작해볼께요.

 

 

 

select 어린 동물 찾기

문제를 먼저 보도록 하겠습니다.

어린 동물 찾기

ANIMAL_INS 테이블에서 <어린 동물>을 찾아서 ANIMAL_ID와 NAME을 출력하면 되는 문제네요.
그리고 더불어 출력할때는 ORDER BY 절을 이용하여 ANIMAL_ID 순으로 출력을 하면 되구요.

그럼, <어린 동물>의 기준은 무엇인지 알아봐야겠죠.

어린 동물의 기준

INTAKE_CONDITION이 Aged가 아닌 경우를 뜻 한다고 합니다.
그렇다면 Aged가 아닌것을 찾아야 하니, WHERE절에 해당 내용을 추가 해두면 될 것 같습니다.

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID;

요렇게 SQL을 작성 해봤습니다.
WHERE절에 조건을 넣구요. 정렬은 ORDER BY 에서 한다는거 잊지 마세요.

 

 

 

select 동물의 아이디와 이름

다음 문제는 동물의 아이디와 이름을 찾는 문제네요.
먼저 문제를 볼께요.

동물의 아이디와 이름

동물 보호소에 들어온 동물들의 정보는 ANIMAL_INS 테이블에 있는데, 여기에서 모든 동물의 아이디와 이름을 ANIMAL_ID 순으로 조회하는 SQL문을 작성하라고 합니다.

모든 동물을 조회 하라고 하니, WHERE절은 필요 없을것같고, 예상 출력을 보면 ANIMAL_ID와 NAME만 있습니다. 고로, SELECT 절에는 ANIMAL_ID 와 NAME이 들어가면 되겠네요. 그리고 정렬은 ANIMAL_ID 순으로 하구요. 그럼 ORDER BY 절에 넣어주면 되겠죠? SQL을 작성 해보겠습니다.

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

갑자기 문제가 쉬워지는 느낌이네요.
쉽죠? 다음 문제로 넘어가겠습니다.

 

 

 

select 여러 기준으로 정렬하기

다음 문제는 정렬 문제네요.
먼저 문제를 볼께요.

여러기준으로 정렬하기

모든 동물을 조회를 하되, 최종 결과를 보면 ANIMAL_ID, NAME, DATETIME을 출력 합니다. 이 세 컬럼이 SELECT 절에 들어가면 되겠죠? 그리고 다음 조건은 동물의 이름, 보호 시작일 순으로 정렬 하라는 조건이 있네요.

이 말은 무엇이냐면, 정렬 기준이 두개가 되는건데, 먼저 이름으로 정렬을 합니다. 물론 알파벳순이 되겠죠? 그리고 나서 이름이 같은 아이가 있다면, 그땐 보호 시작일이 최근인 동물 부터 출력 하라는 의미 입니다. 

날짜에서는 예전 날짜가 작고, 최근날짜, 그리고 미래의 날짜 순으로 크다고 이야기 합니다. 최근 날짜가 앞에 나와야 하니, 내림차순 정렬을 해야 하는것 이죠.
ORDER BY에 이름과 보호 시작일 컬럼 두개를 순서대로 넣어주면 됩니다.

답안을 보겠습니다.

SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC;

내림차순이니, DATETIME 뒤에 DESC를 붙여 주면 됩니다.

 

 

 

select 상위 N개 레코드

다음 문제는 상위 N개 레코드라는 문제 입니다.
먼저 문제를 볼께요.

상위 n개 레코드

문제를 살펴 보겠습니다. 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL을 작성 하라고 하네요.
그 동물의 이름만 출력하면 되구요.

우선, 우리가 앞에서 정렬을 배웠잖아요? 가장 먼저 들어온 동물의 DATETIME값이 가장 과거의 날짜를 가지고 있겠죠?
그럼 DATETIME순으로 정렬을 먼저하고 가장 위에 있는 하나의 데이터만 출력하라고 하면 그게 가장 오래된, 가장 먼저 들어온 동물의 이름이 되겠죠?

아래와 같이 SQL을 작성 해보겠습니다.

SELECT *
FROM
(SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME)
WHERE ROWNUM = 1;

말씀드린데로 ORDER BY에 DATETIME을 넣고 먼저 ANIMAL_INS 테이블을 정렬 합니다.
그리고 해당 테이블을 한번 싸서, 인라인 뷰로 만들어주고, WHERE절에 ROWNUM = 1 이라는 파라미터를 넣어 한줄만 출력하도록 셋팅을 하면 됩니다.
이렇게 SELECT 파트의 문제는 모두 풀었습니다.

SQL에 대해서 심도 있게 공부를 더 하고 싶으신 분은 아래 링크로 이동 하셔서 SQL 입문서를 구입 하시거나, 포스트를 참조 해주시면 됩니다.

2020.03.19 - [Database/sql 강의] - sql 독학 강의 # select를 잘 이용하는 방법(2), 3편 -sTricky

 

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

sql 독학 강의 # select를 잘 이용하는 방법(2), 3편 -sTricky 컨텐츠 index 1. 산술 연산자 사용해보기 2. where절에 비교 연산자를 사용해 보기 3. order by 절을 사용 하여 정렬하여 출력 하..

stricky.tistory.com

https://kmong.com/gig/312750

 

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

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

kmong.com

감사합니다.

##다음 문제 풀이 보러가기##

https://stricky.tistory.com/508

 

프로그래머스 SQL 답 SUM, MAX, MIN 문제 풀이 #03

프로그래머스 SQL 답 SUM, MAX, MIN 문제 풀이 #03 안녕하세요. sTricky 입니다!! 프로그래머스 SQL sum, max, min 문제 풀이를 진행 해보도록 하겠습니다. 바로 진행 해보도록 하겠습니다. 어렵지 않습.

stricky.tistory.com

 

by.sTricky