- Lv1. 모든 레코드 조회하기
- Lv1. 동물의 아이디와 이름
- Lv1. 아픈 동물 찾기
- Lv1. 어린 동물 찾기
- Lv1. 이름이 있는 동물의 아이디
- Lv1. 이름이 없는 동물의 아이디
- Lv1. 역순 정렬하기
- Lv1. 여러 기준으로 정렬하기
- Lv1. 상위 n개 레코드
- Lv1. 최댓값 구하기
- Lv2. 최솟값 구하기
- Lv2. 동물 수 구하기
- Lv2. 동명 동물 수 찾기
- Lv2. 이름에 el이 들어가는 동물 찾기
- Lv2. 입양 시각 구하기(1)
- Lv2. 루시와 엘라 찾기
- Lv2. 중복 제거하기
- Lv2. DATETIME에서 DATE로 형 변환
- Lv2. 중성화 여부 파악하기
- Lv2. 고양이와 개는 몇 마리 있을까
- Lv3. 오랜 기간 보호한 동물(1)
- Lv2. NULL 처리하기
Lv1. 모든 레코드 조회하기
SELECT *
from animal_ins
order by animal_id;
Lv1. 동물의 아이디와 이름
동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회
SELECT animal_id, name
from animal_ins
order by animal_id;
Lv1. 아픈 동물 찾기
동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회
SELECT animal_id, name
from animal_ins
where intake_condition = 'sick';
Lv1. 어린 동물 찾기
동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회
SELECT animal_id, name
from animal_ins
where intake_condition != 'aged';
Lv1. 이름이 있는 동물의 아이디
동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회
SELECT animal_id
from animal_ins
where name is not null
order by animal_id;
Lv1. 이름이 없는 동물의 아이디
동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회
SELECT animal_id
from animal_ins
where name is null
order by animal_id;
Lv1. 역순 정렬하기
동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회 단, ANIMAL_ID 역순으로
SELECT name, datetime
from animal_ins
order by animal_id desc;
Lv1. 여러 기준으로 정렬하기
동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저
SELECT animal_id, name, datetime
from animal_ins
order by name, datetime desc;
Lv1. 상위 n개 레코드
SELECT name
from animal_ins
where datetime = (select min(datetime)
from animal_ins)
order by datetime ;
Lv1. 최댓값 구하기
가장 최근에 들어온 동물은 언제 들어왔는지 조회
SELECT max(datetime) as 시간
from animal_ins
order by datetime;
Lv2. 최솟값 구하기
동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회
SELECT min(datetime) 시간
from animal_ins;
Lv2. 동물 수 구하기
동물 보호소에 동물이 몇 마리 들어왔는지 조회
SELECT count(animal_id) count
from animal_ins;
Lv2. 동명 동물 수 찾기
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회
SELECT name, count(animal_id) count
from animal_ins
where name is not null
group by name
having count(animal_id)>=2
order by name;
Lv2. 이름에 el이 들어가는 동물 찾기
SELECT animal_id, name
from animal_ins
where lower(name) like lower('%el%')
and animal_type = 'Dog'
order by name;
Lv2. 입양 시각 구하기(1)
09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회
SELECT hour(datetime) hour, count(animal_id) count
from animal_outs
group by hour(datetime)
having hour>=9 and hour<20
order by hour;
Lv2. 루시와 엘라 찾기
동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 아이디 순으로조회
SELECT animal_id, name, sex_upon_intake
from animal_ins
where name in ("Lucy", "Ella", "Pickle", "Rogan", "Sabrina", "Mitty");
Lv2. 중복 제거하기
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회 (이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 침)
SELECT count(distinct name) count
from animal_ins;
Lv2. DATETIME에서 DATE로 형 변환
ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜1를 조회
SELECT animal_id, name, date_format(datetime, '%Y-%m-%d') as 날짜
from animal_ins
order by animal_id;
Lv2. 중성화 여부 파악하기
동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회
SELECT animal_id, name,
case when sex_upon_intake
not like 'Intact%'
then 'O'
else 'X'
end '중성화'
from animal_ins
order by animal_id;
Lv2. 고양이와 개는 몇 마리 있을까
동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회
SELECT animal_type, count(animal_type) count
from animal_ins
group by animal_type
order by animal_type;
Lv3. 오랜 기간 보호한 동물(1)
아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회
SELECT name, datetime
from animal_ins I
where I.animal_id not in (select O.animal_id from animal_outs O)
order by I.datetime
limit 3
Lv2. NULL 처리하기
동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회 (이름이 없는 동물의 이름은 “No name”으로 표시)
SELECT animal_type,
case
when name is null
then 'No name'
else name
end as name, sex_upon_intake
from animal_ins;