Notice
Recent Posts
Recent Comments
Link
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

짱이 될거야

프로그래머스 SQL: GROUP BY 본문

알고리즘

프로그래머스 SQL: GROUP BY

jeong57 2022. 9. 30. 13:21

사용언어: Oracle

1. 고양이와 개는 몇 마리 있을까

동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS "count" 
FROM ANIMAL_INS 
GROUP BY ANIMAL_TYPE 
ORDER BY ANIMAL_TYPE;

 

2. 동명 동물 수 찾기

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

<쿼리문의 실행 순서>

  • SELECT (5순위)
  • FROM (순위)
  • WHERE (2순위)
  • GROUP BY (3순위)
  • HAVING (4순위)
  • ORDER BY (6순위)
SELECT NAME, COUNT(NAME) 
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME 
HAVING COUNT(NAME) > 1
ORDER BY NAME;

 

3. 입양 시각 구하기(1)

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

SELECT HOUR, COUNT(HOUR) FROM 
(SELECT EXTRACT (HOUR FROM CAST(DATETIME AS TIMESTAMP)) AS HOUR
FROM ANIMAL_OUTS)
WHERE HOUR BETWEEN 9 AND 19
GROUP BY HOUR
ORDER BY HOUR;

 

4. 입양 시각 구하기(2)

보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.

SELECT HOUR1, NVL(COUNTS, 0) FROM (
(SELECT LEVEL-1 AS HOUR1 FROM DUAL CONNECT BY LEVEL BETWEEN 0 AND 24) A
LEFT OUTER JOIN
(SELECT HOUR2, COUNT(HOUR2) AS COUNTS FROM
(SELECT EXTRACT (HOUR FROM CAST(DATETIME AS TIMESTAMP)) AS HOUR2
FROM ANIMAL_OUTS)
GROUP BY HOUR2) B
ON A.HOUR1 = B.HOUR2
)
ORDER BY A.HOUR1
Comments