7DAYSQL Challenge

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.
ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME,
INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종,
보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

ANIMAL_INS TABLE

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

inTable

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은
테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID,
ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물
종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. ANIMAL_OUTS 테이블의
ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키입니다.

ANIMAL_OUTS TABLE

NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

outTable

1번. 모든 레코드 조회하기

A)

1
2
SELECT * FROM ANIMAL_INS
ORDER BY ANIMAL_ID

2번. 역순 정렬하기

동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 
작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SQL을 실행하면 다음과 
같이 출력되어야 합니다.

A)

1
2
SELECT NAME, DATETIME FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC

3번. 아픈 동물 찾기

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

A)

1
2
3
SELECT ANIMAL_ID,NAME FROM ANIMAL_INS
WHERE INTAKE_CONDITION ='SICK'
ORDER BY ANIMAL_ID ASC

4번. 어린 동물 찾기

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

A)

1
2
3
4
SELECT ANIMAL_ID , NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION <> 'AGED'
ORDER BY ANIMAL_ID

5번. 최솟값 구하기

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을  
작성해주세요.

A)

1
2
3
4
SELECT DATETIME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1

6번. 이름이 없는 동물의 아이디

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

A)

1
2
3
SELECT ANIMAL_ID 
FROM ANIMAL_INS
WHERE NAME IS NULL

7번. 고양이와 개는 몇 마리 있을까

동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 
작성해주세요. 이때 고양이가 개보다 먼저 조회해주세요.

A)

1
2
3
4
SELECT animal_type, count(animal_type) 
FROM ANIMAL_INS
WHERE ANIMAL_TYPE IN ('Cat', 'Dog')
GROUP BY animal_type

8번. 동명 동물 수 찾기

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인
횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 
제외하며, 결과는 이름 순으로 조회해주세요.

A)

1
2
3
4
5
6
SELECT name ,COUNT(name)
FROM ANIMAL_INS
WHERE name IN (SELECT DISTINCT name FROM ANIMAL_INS)
AND name IS NOT NULL
GROUP BY name
HAVING COUNT(name) > 1;

9번. 없어진 기록 찾기

천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데,
보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 
작성해주세요.

A)

1
2
3
4
5
SELECT animal_id , name
FROM ANIMAL_OUTS
WHERE animal_id NOT IN( SELECT animal_id
FROM ANIMAL_INS
)

10번. 있었는데 없었습니다.

관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다
입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 
이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

A)

1
2
3
4
5
6
SELECT o.animal_id, o.name
FROM animal_outs AS o
INNER JOIN animal_ins AS i
ON o.animal_id = i.animal_id
WHERE o.datetime < i.datetime
order by i.datetime asc;

11번. 오래 보호한 동물(1)

아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 
시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 
조회해야 합니다.

A)

1
2
3
4
5
6
7
SELECT name , datetime
FROM ANIMAL_INS
WHERE animal_id NOT IN( SELECT animal_id
FROM ANIMAL_OUTS
)
ORDER BY DATETIME ASC
Limit 3;

12번. 보호소에서 중성화한 동물

보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올
당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와
생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.

A)

1
2
3
4
5
SELECT o.animal_id,o.animal_type ,o.name
FROM animal_outs AS o
JOIN animal_ins AS i
ON o.animal_id = i.animal_id
WHERE o.SEX_UPON_OUTCOME <> i.SEX_UPON_INTAKE

13번. 루시와 엘라 찾기

동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina,
Mitty인 동물의 아이디와 이름, 성별을 조회하는 SQL 문을 작성해주세요.

A)

1
2
3
4
5
SELECT o.animal_id,o.animal_type ,o.name
FROM animal_outs AS o
JOIN animal_ins AS i
ON o.animal_id = i.animal_id
WHERE o.SEX_UPON_OUTCOME <> i.SEX_UPON_INTAKE

14번. 이름에 el이 들어가는 동물 찾기

보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올
당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와
생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.

A)

1
2
3
4
5
SELECT animal_id, name 
FROM animal_ins
WHERE name LIKE '%el%'
AND ANIMAL_TYPE = 'dog'
ORDER BY name

15번. 이름에 el이 들어가는 동물 찾기

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

A)

1
2
3
SELECT animal_id, name , datetime
FROM animal_ins
ORDER BY NAME ASC, datetime desc
도움이 : 이혜민

하루를 기록하다