[프로그래머스] 데이터베이스(Oracle) 풀이(1)

박현·2022년 8월 19일
1

코딩테스트

목록 보기
1/1
  1. 모든 레코드 조회하기
    동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회
SELECT *FROM ANIMAL_INS ORDER BY ANIMAL_ID;
  1. 역순 정렬하기
    동물보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL문을 작성 이때 결과는 아이디 순으로 조회
SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC;
  1. 아픈 동물 찾기
    동물보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL문을 작성 이때 결과는 아이디 순으로 조회
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION='Sick' ORDER BY ANIMAL_ID;
  1. 어린 동물 찾기
    동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하는 SQL문 작성 이때 결과는 아이디 순으로 조회
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged' ORDER BY ANIMAL_ID;
  1. 동물의 아이디와 이름
    동물 보호소에 들어온 모든 동물의 아아디와 이름을 ANIMAL_ID 순으로 조회
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID;
  1. 여러 기준으로 정렬하기
    동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호시작일을 이름순으로 조회 단, 이름이 같은 동물중에서는 보호를 나중에 시작한 동물을 먼저 출력
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC;
  1. 상위 N개 레코드
    동물보호소에 가장 먼저 들어온 동물의 이름을 조회
SELECT *FROM 
(
	SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME
)WHERE ROWNUM=1;
  1. 최댓값 구하기
    가장 최근에 들어온 동물은 언제 들어왔는지 조회
SELECT MAX(DATETIME) FROM ANIMAL_INS;
  1. 최솟값 구하기
    동물보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회
SELECT MIN(DATETIME) FROM ANIMAL_INS;
  1. 동물 수 구하기
    동물보호소에 동물이 몇마리 들어왔는지 조회
SELECT COUNT(*) FORM ANIMAL_INS;
  1. 중복 제거하기
    동물 보호소에 들어온 동물의 이름은 몇개인지 조회 이때 이름이 NULL일 경우는 집계하지 않으며 중복되는 이름은 하나로 친다.
SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME != 'NULL';
  1. 고양이와 개는 몇마리 있을까
    동물 보호소에 들어온 동물중 고양이와 개가 각각 몇마리인지 조회 이때 고양이를 개보다 먼저 조회
SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE;
  1. 동명 동물 수 찾기
    동물보호소에 들어온 둥물이름 중 두번이상 쓰인 이름과 해당이름이 쓰인 횟수를 조회 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름순으로 출력
SELECT NAME, COUNT(*) FROM ANIMAL_INS WHERE NAME != 'NULL' GROUP BY NAME HAVING COUNT(NAME) >1 ORDER BY NAME;
  1. 입양 시각 구하기(1)
    09:00부터 19:59까지 각 시간대 별로 입양이 몇건이나 발생했는지 조회 이때 결과는 시간대 순으로 정렬
SELECT TO_CHAR(DATETIME,'HH24'), COUNT(*) FROM ANIMAL_OUTS WHERE TO_CHAR(DATETIME,'HH24') BETWEEN 9 AND 19 GROUP BY TO_CHAR(DATETIME,'HH24') ORDER BY TO_CHAR(DATETIME,'HH24');
  1. 입양 시각 구하기(2)
    0시부터 23시까지 각 시간대별로 입양이 몇건이나 발생했는지 조회 이때 결과는 시간대 순으로 정렬
SELECT A.HOUR, NVL(B.COUNT,0) AS COUNT FROM
(
	SELECT LEVEL-1 AS HOUR FROM DUAL CONNECY BY LEVEL <=24
)A, 
(
	SELECT TO_CAHR(DATETIME,'HH24') AS HOUR, COUNT(*) FROM ANIMAL_OUTS GROUP BY TO_CHAR(DATETIME,'HH24') ORDER BY TO_CHAR(DATETIME,'HH24')
)B WHERE A.HOUR=B.HOUR(+) ORDER BY A.HOUR;

0개의 댓글