프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SQL 코딩 테스트에 대비해서 프로그래머스에서 제공하는 고득점 Kit 문제들을 풀어보려고 한다.
기본적으로 다음 문제 설명에 명시되어있는 데이터로 SQL 문제를 풀면 된다
문제 설명
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
NAME | TYPE | NULLABLE |
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
INTAKE_CONDITION | VARCHAR(N) | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
모든 레코드 조회하기 (LEVEL 1)
동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요.
SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID;
제일 기본적인 SELECT문이다. 다만 ANIMAL_ID순으로 조회하는 조건이 있으니 ORDER BY를 추가해줘야 한다.
역순 정렬하기 (LEVEL 1)
동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요.
SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;
모든 정보 대신 이름과 보호 시작일을 지정했으니 해당 컬럼만 선택한다. 역순이므로 DESC를 사용한다.
아픈 동물 찾기 (LEVEL 1)
동물 보호소에 들어온 동물 중 아픈 동물(INTAKE_CONDITION이 Sick 인 경우를 뜻함)의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ORDER BY ANIMAL_ID;
아픈 동물이라는 특정 조건이 있으니 WHERE 구절을 통해 데이터를 조회한다.
어린 동물 찾기 (LEVEL 1)
동물 보호소에 들어온 동물 중 젊은 동물(INTAKE_CONDITION이 Aged가 아닌 경우를 뜻함)의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION <> 'Aged' ORDER BY ANIMAL_ID;
아픈 동물 찾기와 마찬가지로 WHERE 구절을 사용해 데이터를 조회한다. Aged가 아닌 경우이니 <>으로 조건을 나타낸다. (<>은 SQL에서!=와 같다)
동물의 아이디와 이름 (LEVEL 1)
동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요.
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID;
간단한 SELECT문이다.
여러 기준으로 정렬하기 (LEVEL 1)
동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC;
여러 기준으로 정렬할때, 즉 첫 번째 기준이 같을 경우 두 번째 기준으로 정렬할 때에는 쉼표(,)로 기준을 나눈다. 2개뿐만 아니라 더 많은 기준을 적용할 수 있다.
상위 n개 레코드 (LEVEL 1)
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1;
LIMIT 구절을 통해 조회할 데이터 결과의 숫자를 제한 할 수 있다. 정렬 후 첫 번째 데이터를 선택하면 가장 먼저 들어온 동물의 데이터를 조회할 수 있다. 반대로, 내림차순으로 정렬한 뒤 LIMIT을 쓰면 가장 나중에 들어온 동물의 데이터를 선택할 수 있다.
여기까지가 프로그래머스 SQL 고득점 Kit의 SELECT 문제들이다. 조건에 맞는 데이터를 원하는 순서대로 조회하는 SQL의 기본기라고 할 수 있다. 만약 위의 문제를 푸는데 어려움이 있다면 SQL기본 개념을 다시 정리하는 것을 추천한다.
SQL 개념정리
SQL이란? SQL (Structured Query Language)이란 쉽게 말해서 데이터베이스와 소통하기 위한 언어이다. SQL을 통해서 데이터베이스 내 저장된 데이터를 읽고, 쓰고, 삭제하는 것이 가능하다. 예를 들자면, A
suminig.tistory.com
'SQL' 카테고리의 다른 글
[프로그래머스 SQL 고득점 Kit] GROUP BY (0) | 2022.04.08 |
---|---|
[프로그래머스 SQL 고득점 Kit] SUM, MAX, MIN (0) | 2022.04.01 |
SQL 개념정리 (0) | 2022.03.27 |