728x90
반응형
고양이와 개는 몇 마리 있을까
https://school.programmers.co.kr/learn/courses/30/lessons/59040
Q : 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
1. GROUP BY 사용
SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
2. PARTITION BY 사용
SELECT DISTINCT(ANIMAL_TYPE), COUNT(*) OVER (PARTITION BY ANIMAL_TYPE)
FROM ANIMAL_INS
ORDER BY ANIMAL_TYPE
두 개의 차이는 무엇일까?
- GROUP BY 는 특정 컬럼을 기준으로 집계 함수를 사용하여 건수(COUNT), 합계(SUM), 평균(AVG) 등 집계성 데이터를 추출할 때 사용된다. 또 Group 에 따라 행을 집약해 결과를 도출하기 때문에, 그 과정에서 (GROUP BY 로 묶었던 컬럼인 ANIMAL_TYPE 만 제외하고) 기존의 상세 데이터들을 잃게 된다.
- PARTITION BY 는 GROUP BY와 다르게 기존 행의 정보들이 모두 유지된다. 그렇기 때문에 SELECT ANIMAL_TYPE으로 쿼리를 추출한다면 아래와 같은 그림처럼 나오게 된다. ANIMAL_TYPE을 중복처리(DISTINCT) 해주게 되면 GROUP BY와 같은 결과를 추출할 수 있다.
728x90
반응형
'데이터베이스 > 코딩테스트' 카테고리의 다른 글
[Programmers]동명 동물 수 찾기(GROUP BY, HAVING) (0) | 2023.11.02 |
---|---|
[Programmers]자동차 대여 기록에서 장기/단기 대여 구분하기(CASE WHEN, DATEDIFF) (0) | 2023.11.02 |
[Programmers] 나이 정보가 없는 회원 수 구하기 (COUNT, SUM) (0) | 2023.10.28 |
[Programmers] 여러 기준으로 정렬하기 (ORDER BY 여러개) (0) | 2023.10.28 |