https://programmers.co.kr/learn/courses/30/lessons/59412

 

코딩테스트 연습 - 입양 시각 구하기(1)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

 

문제 설명

 

T
1
2
3
4
5
select to_char(datetime'hh24'), count(datetime) count
from animal_outs
where to_char(datetime'hh24') between 9 and 20
group by to_char(datetime'hh24')
order by to_char(datetime'hh24')
반응형

https://programmers.co.kr/learn/courses/30/lessons/59041

 

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

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

programmers.co.kr

 

문제 설명

 

ANIMAL_INS 테이블 내용 예시

 

 

 

1. having 절 사용

두 번 이상 쓰인 동물 이름(NAME)을 조회하기 위해 name에 대한 COUNT() 함수를 사용 

group by 절을 통해 name 으로 그룹화해준다.

이름이 NULL인 데이터를 제외하기 위해 where 절을 사용해 "NAME IS NOT NULL" 이용

(집계함수는 COUNT() 는 기본적으로 NULL 값을 제외하고 처리하기 때문에 WHERE 조건절로 처리할 필요 X)

having 절을 활용해 count(name)의 값이 2 이상인 것들만을 조회

 

1
2
3
4
5
6
select name, count(name) COUNT
from animal_ins
where name is not null
group by name
having count(name) >= 2
order by name

 

 

2. 서브쿼리 사용

이름별로 집계(COUNT)한 서브쿼리 c 를 만들어 count값이 2이상인 것들을 where 절로 손쉽게 조회 가능

1
2
3
4
5
6
select c.name, c.count
from (select name, count(name) count
      from animal_ins
      group by name) c
where c.count >= 2
order by name

 

반응형

https://programmers.co.kr/learn/courses/30/lessons/59040

 

코딩테스트 연습 - 고양이와 개는 몇 마리 있을까

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

programmers.co.kr

 

문제 설명
ANIMAL_INS 테이블 내용 예시

 

각각의 동물의 종(ANIMAL_TYPE) 에 대해 몇마리인지 세기 위해 COUNT() 함수를 활용

COUNT() 함수는 집계함수로 한 개의 ROW 결과로 나타난다

각각의 동물의 종에 따라서 집계하기 위해 GROUP BY를 사용해 ANIMAL_TYPE 별로 그룹화가 필요하다

 

1
2
3
4
select animal_type, count(animal_type) count
from animal_ins
group by animal_type
order by animal_type

 

반응형

https://programmers.co.kr/learn/courses/30/lessons/59410

 

코딩테스트 연습 - NULL 처리하기

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

programmers.co.kr

 

문제 설명

 

ANIMAL_INS 테이블 내용 예시

 

테이블에서 생물의 종(ANIMAL_TYPE), 이름(NAME), 성별 및 중성화 여부(SEX_UPON_INTAKE)를 조회해야 한다

이때 이름이 없는 레코드의 경우 이름값이 NULL로 표기되는데 NULL 값에 대해 "No name" 으로 값을 변경해야 한다

NVL() 함수를 활용해 이름(NAME) 칼럼에서 NULL 에 해당하는 값들을 처리할 수 있다

 

NVL( column_name , 변환값 : column_name 에서 NULL에 해당하는 값들을 변환값으로 치환

 

1
2
3
SELECT ANIMAL_TYPE, NVL(NAME,'No name') NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
반응형

https://programmers.co.kr/learn/courses/30/lessons/59407

 

코딩테스트 연습 - 이름이 있는 동물의 아이디

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

programmers.co.kr

 

문제 설명
ANIMAL_INS 테이블 내용 예시

 

이름값(NAME)이 존재하는 데이터를 조회하기 위해 WHERE 조건절에서 NAME IS NOT NULL 연산으로 조회 가능

 

1
2
3
4
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID ASC ;

 

반응형

https://programmers.co.kr/learn/courses/30/lessons/59039

 

코딩테스트 연습 - 이름이 없는 동물의 아이디

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

programmers.co.kr

 

문제설명

 

ANIMAL_INS 테이블 내용 예시

 

 

DB에서 NULL값에 대한 비교 연산자(=)는 불가능하다

NULL 에 대한 연산자인 'IS NULL' 을 사용하여 NULL값을 확인해야 한다

따라서 NAME값이 NULL 데이터를 조회하기 위해 WHERE 조건절에서 NAME IS NULL 을 활용해 조회 가

 

1
2
3
4
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID ASC;

 

반응형

'DB(Oracle) > Programmers(Oracle)' 카테고리의 다른 글

NULL 처리하기_IS NULL  (0) 2020.05.31
이름이 있는 동물의 아이디_IS NULL  (0) 2020.05.31
중복 제거하기_SUM/MAX/MIN  (0) 2020.05.29
동물 수 구하기_SUM/MAX/MIN  (0) 2020.05.29
최솟값 구하기_SUM/MAX/MIN  (0) 2020.05.29

https://programmers.co.kr/learn/courses/30/lessons/59408

 

코딩테스트 연습 - 중복 제거하기

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

programmers.co.kr

문제 설명
ANIMAL_INS 테이블 내용 예시

 

 

이름의 중복을 제거하기 위해 DISTINCT 키워드로 중복을 제거

이름에 대한 중복없이 행의 수를 COUNT() 를 사용해 조회

WHERE 절에 name 이 NULL이 아닌 값들에 대해 COUNT() 하도록 했음

 

※ 기본적으로 집계함수(COUNT, SUM, ..등)는 NULL값에 대해 처리하지 않음

   따라서, WHERE 절이 빠져도 알맞게 처리가 된다

 

1
2
3
select count(distinct name) 
from animal_ins
where name is not null

 

반응형

https://programmers.co.kr/learn/courses/30/lessons/59406

 

코딩테스트 연습 - 동물 수 구하기

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

programmers.co.kr

 

문제 설명

 

ANIMAL_INS 테이블 내용 예시d

 

모든 행의 수를 count(*)로 구할 수 있다.

1
2
select count(*
from animal_ins

 

 

 

반응형

+ Recent posts