반응형

문제 풀이

1. GROUP BY 를 통해 각 이름의 개수를 세어줍니다.

2. 개수가 2개 이상인 이름만 출력합니다.

* 이름이 NULL인 것이 함정입니다.

Oracle Code

1
2
3
4
5
6
7
SELECT X.NAME, X.COUNT
FROM(SELECT NAME, COUNT(*) COUNT
    FROM ANIMAL_INS
    WHERE NAME IS NOT NULL
    GROUP BY NAME) X
WHERE X.COUNT > 1
ORDER BY X.NAME
cs

문제 링크

 

코딩테스트 연습 - 동명 동물 수 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

반응형
반응형

문제 풀이

1. 요거트가 담긴 바구니의 카트 아이디 중 우유가 담긴 바구니를 찾는다.

Oracle Code

1
2
3
4
5
6
SELECT DISTINCT X.CART_ID
FROM (SELECT CART_ID 
    FROM CART_PRODUCTS
    WHERE NAME = 'Yogurt') X, CART_PRODUCTS Y
WHERE Y.NAME = 'Milk' AND X.CART_ID = Y.CART_ID
ORDER BY X.CART_ID;
cs

Line 2~4 : 요거트가 담긴 바구니의 카트 아이디를 구한다.

Line 5 : 우유가 담긴 바구니의 카트 아이디 중 요거트가 담긴 바구니의 카트 아이디와 같은 것을 찾아 반환한다.

문제링크

 

코딩테스트 연습 - 우유와 요거트가 담긴 장바구니

CART_PRODUCTS 테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다. CART_PRODUCTS 테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가

programmers.co.kr

 

반응형
반응형

문제 풀이

1. 보호소에 들어올 때는 중성화가 안되어있었어야 하므로 ANIMAL_INS.SEX_UPON_INTAKE는 I로 시작해야 한다.

2. 보호소에서 나갈 때는 중성화가 되어있어야하므로 ANIMAL_OUTS.SEX_UPON_OUTCOM은 N 또는 S로 시작해야 한다.

ORACLE Code

1
2
3
4
5
6
7
8
9
10
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME
FROM (
    SELECT ANIMAL_ID, ANIMAL_TYPE, NAME
    FROM ANIMAL_INS
    WHERE SEX_UPON_INTAKE LIKE 'I%'
) I
INNER JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
AND SUBSTR(O.SEX_UPON_OUTCOME,1,1) IN ('N','S')
ORDER BY I.ANIMAL_ID;
cs

Line 9에서 SEX_UPON_OUTCOME 을 가공하므로 만약 해당 칼럼에 인덱스가 걸려있으면 활용할 수 없는 것이 걸린다. Line 5처럼 Like로 N과 S에 대해 구한 후 union all을 하면 더 좋을 것 같다.

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형
반응형

문제 풀이

ANIMAL_INS의 DATETIME이 ANIMAL_OUTS의 DATETIME 보다 늦은 ANIMAL_ID를 찾아 반환하면 된다.

 

ORACLE Code

1
2
3
4
5
SELECT I.ANIMAL_ID, I.NAME
from ANIMAL_OUTS O INNER JOIN ANIMAL_INS I
on O.ANIMAL_ID = I.ANIMAL_ID
and O.DATETIME < I.DATETIME
order by I.DATETIME;
cs

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형
반응형

문제 풀이

ANIMAL_OUTS 의 ANIMAL_ID 중 ANIMAL_INS 에 없는 것을 찾는다.

 

ORACLE Code

1
2
3
4
5
6
7
8
SELECT ANIMAL_ID, NAME
from ANIMAL_OUTS O
where not exists (
    select 'x' 
    from ANIMAL_INS I
    where O.ANIMAL_ID = I.ANIMAL_ID
)
order by ANIMAL_ID;
cs

Line 3 : 부분범위처리를 활용하여 문제풀이의 내용을 확인

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

반응형

+ Recent posts