스파르타 코딩클럽의 SQL 강의 수강 후, 조금 더 연습이 필요하다고 생각해 프로그래머스 SQL 고득점 kit를 풀어보게 됐다.
아래의 모든 답은 직접 풀어본 후 적은 답입니다. SQL 특성상 query가 다르더라도 같은 결과에 도출됐다면 모든 query는 정답이 될 수 있습니다.
문제 링크 👇
프로그래머스 문제 키트 👇
SELECT
동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
SELECT *
from animal_ins
order by animal_id
동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요.
SELECT name, datetime
from animal_ins
order by animal_id desc
동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
select animal_id, name
from animal_ins
where intake_condition = 'sick'
order by animal_id
동물 보호소에 들어온 동물 중 젊은 동물 1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
* INTAKE_CONDITION이 Sick 인 경우를 뜻함
select animal_id, name
from animal_ins
where intake_condition = 'sick'
order by animal_id
동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요.
select animal_id, name
from animal_ins
동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.
select animal_id, name, datetime
from animal_ins
order by name,datetime desc
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
select name
from animal_ins
order by datetime
limit 1
SUM, MAX, MIN
가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
select datetime
from animal_ins
order by datetime desc
limit 1
동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
select datetime
from animal_ins
order by datetime
limit 1
동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성해주세요.
select count(*)
from animal_ins
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
select count(distinct(name))
from animal_ins
where name is not null
동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
select animal_type, count(*)
from animal_ins
group by animal_type
order by animal_type
"고양이를 개보다 먼저 조회해주세요"때문에 order by 조건이 있어야만 정답으로 처리된다.
아래처럼 order by 조건이 없어도 결과상의 차이는 없다.
select animal_type, count(*)
from animal_ins
group by animal_type