본문 바로가기
DB

프로그래머스 SQL 테스트 2

by _dreamgirl 2022. 5. 11.
반응형

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. 
ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAMETYPENULLABLE
ANIMAL_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_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_OUTCOME VARCHAR(N) FALSE

예시

--1. 두개로 정렬하기
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC
;

-- 2. 가장 일찍 보호소에 들어온 동물 찾기
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1
;

-- 3. 이름으로 중복 제거한 동물들의 숫자 세아리기
SELECT COUNT (DISTINCT NAME ) AS COUNT
FROM ANMIAL_INS
;

-- 4. 동물의 종류별 숫자 세아리기, 동물의 종류는 이름순으로
SELECT ANIMAL_TYPE, COUNT(*) AS COUNT
FROM ANMIAL_INS
GROUPY BY ANIMAL_TYPE
ORDER BY NAME DESC
;

--5. 중복 제거된 이름이 두개 이상인 동물들을 이름순으로 열하기
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) > 1
ORDER BY NAME ASC
;

-- 6. 이름이 없는 동물의 아이디 구하기
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID ASC
;

--7. 이름이 NULL값이면 대체하기
SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
;

--8. 동물 보호일 시간대 별로 출력하기(9~19시간별)
SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE (HOUR(DATETIME) > 8 AND HOUR(DATETIME) < 20)
GROUP BY HOUR
ORDER BY HOUR ASC
;

-- 9. RIGHT JOIN
SELECT B.ANIMAL_ID , B.NAME
FROM ANIMAL_INS A
RIGHT JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE A.ANIMAL_ID IS NULL
;

-- 10. LEFT JOIN
SELECT A.NAME, A.DATETIME
FROM ANIMAL_INS A
LEFT JOIN ANIMAL_OUTS B
ON A.ANIMAL_ID = B.ANIMAL_ID
WHERE B.ANIMAL_ID IS NULL

ORDER BY A.DATETIME ASC
LIMIT 3
;



https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

https://yoo-hyeok.tistory.com/92

 

[Mysql] 내장 함수 정리

MySQL 내장 함수 정리 1. 숫자 관련 함수 ▶ ABS(숫자) - 절대값 출력. ▶ CEILING(숫자) - 값보다 큰 정수 중 가장 작은 수. ▶ FLOOR(숫자) - 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버림(음수일 경

yoo-hyeok.tistory.com

 

반응형

'DB' 카테고리의 다른 글

프로그래머스 SQL 테스트 3  (0) 2022.06.01
SQL JOIN문 공부하기  (0) 2022.05.15
프로그래머스 SQL 테스트 1  (0) 2022.05.10
이것이 MariaDB다 2  (0) 2020.02.22
이것이 MariaDB다 1  (0) 2020.02.22

댓글