[프로그래머스] 보호소에서 중성화한 동물 / 입양 시각 구하기(2) / 우유와 요거트가 담긴 장바구니 (ORACLE)
1. 보호소에서 중성화한 동물
https://school.programmers.co.kr/learn/courses/30/lessons/59045
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
NAMETYPENULLABLEANIMAL_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 |
ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. ANIMAL_OUTS 테이블의 ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키입니다.
NAMETYPENULLABLEANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.
※ SQL 코드
-- 코드를 입력하세요
with
vw_before_animals as (
select *
from animal_ins
where 1=1
and sex_upon_intake not in ('Neutered Male', 'Spayed Female')
)
select
a.animal_id
,a.animal_type
,a.name
from vw_before_animals a
inner join animal_outs b
on a.animal_id = b.animal_id
where 1=1
and b.sex_upon_outcome in ('Neutered Male', 'Spayed Female')
order by a.animal_id
2. 입양 시각 구하기(2)
https://school.programmers.co.kr/learn/courses/30/lessons/59413
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.
NAMETYPENULLABLEANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
※ SQL 코드
-- 코드를 입력하세요
WITH
vw_time_group as (
select
hour
, count(*) as count
from (
select
to_char(datetime, 'HH24') as hour
from animal_outs
)
group by hour
),
vw_tmp as (
select 0 as hour, 0 as count from dual
union all
select 1 as hour, 0 as count from dual
union all
select 2 as hour, 0 as count from dual
union all
select 3 as hour, 0 as count from dual
union all
select 4 as hour, 0 as count from dual
union all
select 5 as hour, 0 as count from dual
union all
select 6 as hour, 0 as count from dual
union all
select 7 as hour, 0 as count from dual
union all
select 8 as hour, 0 as count from dual
union all
select 9 as hour, 0 as count from dual
union all
select 10 as hour, 0 as count from dual
union all
select 11 as hour, 0 as count from dual
union all
select 12 as hour, 0 as count from dual
union all
select 13 as hour, 0 as count from dual
union all
select 14 as hour, 0 as count from dual
union all
select 15 as hour, 0 as count from dual
union all
select 16 as hour, 0 as count from dual
union all
select 17 as hour, 0 as count from dual
union all
select 18 as hour, 0 as count from dual
union all
select 19 as hour, 0 as count from dual
union all
select 20 as hour, 0 as count from dual
union all
select 21 as hour, 0 as count from dual
union all
select 22 as hour, 0 as count from dual
union all
select 23 as hour, 0 as count from dual
)
select a.hour
,nvl(b.count, 0) as count
from vw_tmp a
left outer join vw_time_group b
on a.hour = b.hour
order by a.hour
3. 우유와 요거트가 담긴 장바구니
https://school.programmers.co.kr/learn/courses/30/lessons/62284
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
CART_PRODUCTS 테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다. CART_PRODUCTS 테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가격을 나타냅니다.
NAMETYPEID | INT |
CART_ID | INT |
NAME | VARCHAR |
PRICE | INT |
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
※ SQL 코드
-- 코드를 입력하세요
with
vw_milk as (
select cart_id
from cart_products
where name = 'Milk'
)
select cart_id
from cart_products
where 1=1
and cart_id in (select cart_id
from vw_milk)
and name = 'Yogurt'
order by cart_id
매일의 기록 SQL
요즘은 자격증 공부를 겸하느라 블로그에 신경을 덜 쓰고 있는 거 같아 다시 시작해본다.
-새벽코딩-