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