프로그래머스 사이트의 <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 |
---|