본문 바로가기
코딩 이야기/프로그래머스

SQL - SELECT 문제

by 꾸욱꾸우욱 2021. 6. 29.

프로그래머스 사이트의 <SQL 고득점 Kit> 문제를 풀어보도록 하겠다. 백엔드 개발자로 성장하기 위해서 SQL 쿼리를 잘 다루는 것은 필수적이라 생각한다. 스스로를 성장시키기 위해 공부할 것이다.

 

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

우선 오늘은 SELECT 문제 전반을 확인해보도록 하겠다. 작성한 답은 MySQL을 기준으로 작성하였다.


1. 모든 레코드 조회하기

 

https://programmers.co.kr/learn/courses/30/lessons/59034

 

코딩테스트 연습 - 모든 레코드 조회하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

간단하게 설명하면 테이블에 존재하는 모든 정보를 ANIMAL_ID를 기준으로 정렬해주면 된다.

크게 복잡하지 않은 쿼리로 다음을 입력하면 정답 처리가 된다.

 

SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID

2. 역순 정렬하기

 

https://programmers.co.kr/learn/courses/30/lessons/59035

 

코딩테스트 연습 - 역순 정렬하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

이전 문제가 전체 요소를 다 보여주는 문제였다면, 이번 문제는 특정 컬럼만을 뽑아서 정렬해주는 문제이다. 이때 역순 정렬을 해줘야 하므로 ORDER BY 구문의 끝에 DESC를 붙여주자.

 

SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC

3. 아픈 동물 찾기

 

https://programmers.co.kr/learn/courses/30/lessons/59036

 

코딩테스트 연습 - 아픈 동물 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

이번에는 WHERE 구문을 이용하는 문제로 특정 조건에 부합하는 값을 찾아서 출력해주는 문제이다. WHERE를 이용하여 INTAKE_CONDITION이 "Sick"인 값을 찾으면 된다.

 

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = "Sick"

4. 어린 동물 찾기

 

https://programmers.co.kr/learn/courses/30/lessons/59037

 

코딩테스트 연습 - 어린 동물 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

조건에 맞는 값을 찾되, 이번엔 그에 해당하지 않는 값 즉, 여집합을 찾아내는 문제로 WHERE에 NOT을 이용하였다.

 

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NOT INTAKE_CONDITION = "Aged" ORDER BY ANIMAL_ID

5. 동물의 아이디와 이름

 

https://programmers.co.kr/learn/courses/30/lessons/59403

 

코딩테스트 연습 - 동물의 아이디와 이름

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

동물의 아이디와 이름을 특정 컬럼을 기준으로 정렬하는 문제이다. ORDER BY를 활용하였다.

 

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID

6. 여러 기준으로 정렬하기

 

https://programmers.co.kr/learn/courses/30/lessons/59404

 

코딩테스트 연습 - 여러 기준으로 정렬하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

이번 문제는 정렬 조건을 다양하게 둔 문제로, 이름 순으로 조회하되 이름이 같을 경우 보호를 나중에 시작한 순서로 보여줘야 했다. 이를 위해 ORDER BY를 활용하였으며 두 번째 정렬 조건을 첫 번째 정렬 조건 뒤에 작성하여 해결하였다.

 

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

7. 상위 n개 레코드

 

https://programmers.co.kr/learn/courses/30/lessons/59405

 

코딩테스트 연습 - 상위 n개 레코드

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 문제로 단 하나의 검색 결과만 출력해야 했다. 이를 위해 LIMIT를 사용하였다.

 

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1

이상으로 SELECT 문제를 마무리 하였다. 기본 구문인 만큼 상대적으로 쉬운 문제들이었다. 다음은 SUM, MAX, MIN을 풀어보겠다.

'코딩 이야기 > 프로그래머스' 카테고리의 다른 글

SQL - SUM, MAX, MIN 문제  (0) 2021.06.30