티스토리 뷰

MySQL Level 1 문제풀이를 해보려고 한다.

포스팅 남길것도 없이 쉽게 끝났지만, 남겨두면 언제가 유익한 정보가 되길 바라면서...

기본적으로 SQL Level 1의 문제들은 SELECT 문을 잘 활용할수 있는가를 물어보는 수준이다. 

 

모든 문제에 사용되는 DB테이블은 하나이고 스키마는 다음과 같다. 문제풀이 순서는 내맘대로이다.

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

 [동물 보호소에 들어온 동물]

 

1. 모든 레코드 조회하기 

: 동물 보호소에 들어온 모든 동물의 정모를 ANIMAl_ID 순으로 조회하는 SQL을 작성하세요.

SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID

2. 이름이 없는 동물의 아이디

:동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID;

3. 이름이 있는 동물의 아이디

:동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID

4. 어린 동물 찾기

:동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

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

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

:동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.

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

6. 최댓값 구하기

:가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1

or

SELECT MAX(DATETIME) FROM ANIMAL_INS

7. 역순 정렬하기

:동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요.

SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC

8. 아픈 동물 찾기

:동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ORDER BY ANIMAL_ID

9. 동물의 아이디와 이름

:동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. 

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID

10. 상위 N개 레코드

:동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1