짱이 될거야
프로그래머스 SQL: GROUP BY 본문
사용언어: 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
'알고리즘' 카테고리의 다른 글
프로그래머스 SQL: String, Date (0) | 2022.09.30 |
---|---|
프로그래머스 SQL: IS NULL (0) | 2022.09.30 |
프로그래머스 SQL: SUM, MAX, MIN (0) | 2022.09.30 |
프로그래머스 SQL: SELECT (0) | 2022.09.30 |
백준 4485: 녹색 옷 입은 애가 젤다지? Python (Dijkstra) (0) | 2022.09.27 |
Comments