프로그래머스 SQL 고득전 kit를 풀어보고 정리한 내용입니다.
맞춘 정답과 틀린 경우 생각해내지 못한 문법 위주로 작성하였습니다.
정리 내용 출처는 아래를 참고해 주세요.
Lv.2 고양이와 개는 몇 마리 있을까
처음 작성 답안
GROUP BY를 이용해 ANIMAL_TYPE을 기준으로 그룹화 시키고 -> ANIMAL_TYPE에 따라 각각 강아지와 고양이로 그룹화 됨
그룹화된 해당 ANIMAL_TYPE을 기준으로 컬럼 선택한다.
이때, COUNT 컬럼명을 붙여 그룹화된 데이터의 개수를 각각 구해준다.
SELECT
ANIMAL_TYPE,
COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE;
추가 답안
WHERE 구문만 사용해 각각 ANIMAL_TYPE이 고양이, 강아지인 경우로 나누어 SELECT 구문을 구하고 UNION 시켜준다.
SELECT
ANIMAL_TYPE,
COUNT(*) AS COUNT
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = "Cat"
UNION
SELECT
ANIMAL_TYPE,
COUNT(*) AS COUNT
FROM ANIMAL_INS
WHERE ANIMAL_INS = "Dog";
GROUP BY
데이터를 특정 컬럼 기준으로 그룹화시키는 명령어.
- 그룹을 나누고 다시 그 그룹 안에서 세부그룹으로 나눌 수 있다
GROUP BY COL1, COL2 ⇒ COL1안에서 다시 COL2로 나누기 가능 - 각 그룹에 대한 연산 결과(합, 평균, 갯수 등)를 산출하기 위해서는 집계함수가 필요
- GROUP BY 구에 있는 컬럼은 반드시 SELECT 절에도 존재해야 한다
- GROUP BY 구에도 다양한 함수 사용 가능하다 (SUBSTR, INSTR 등등..)
- 그룹 함수
하나 이상의 행을 그룹으로 묶어 연산하기 위한 함수로, GROUP BY를 기준으로 각 그룹을 연산한다.
COUNT - 행의 개수 연산 - NULL 포함 연산
SUM - 합계 - NULL 제외 연산
AVG - 평균 - NULL 제외 연산 (포함하고 싶다면 NULL 데이터를 0으로 채워 연산)
MAX - 최댓값 - NULL 제외 연산
MIN - 최솟값 - NULL 제외 연산
STDDEV - 표준편차 - NULL 제외 연산
VARIANCE - 분산 - NULL 제외 연산
HAVING
GROUP BY 절에 대한 조건을 걸고 싶을 때 사용하는 명령어
- 그룹화 된 결과에 조건을 걸어주는 역할
- HAVING 뒤에는 SELECT 구문에서 사용하는 AS 별칭 사용 불가
ORDER BY
테이블을 특정 컬럼값을 기준으로 정렬하기 위한 명령어
- 여러개 컬럼을 기준으로 정렬 가능
ex) ORDER BY COL1, COL2... - 기본 정렬값은 ASC(오름차순)로 설정되어있으므로 오름차순 정렬시에는 입력 필요 X, 내림차순의 경우 DESC
- SELECT절의 컬럼 순서 혹은 별칭으로도 정렬 가능ex) ORDER BY 1, 2,...
UNION
2개 이상 테이블에 존재하는 같은 성격의 값을 하나의 쿼리로 추출하는 것
- 컬럼명이 동일해야 한다 -> 같지 않을 경우 AS 를 이용해서 동일하게 맞춰줘야 한다
단, 별칭 입력은 UNION을 사용하기 전에 이뤄져야함 - 컬럼별로 데이터 타입이 동일해야 한다.
- 출력할 컬럼의 개수가 동일해야 한다.
- UNION DISTINCT / UNION -> 중복되지 않은 값만 추출
- UNION ALL -> 중복 허용하고 모든 값 추출
UNION VS JOIN
- JOIN : 새로운 열로 결합한다. (수평결합)
- UNION : 새로운 행으로 결합한다. (수직결합)
* https://velog.io/@genieee/GROUP-BY-HAVING-ORDER-BY-%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC
'SQL' 카테고리의 다른 글
[SQL] 프로그래머스 고득점 kit - SELECT / 인기있는 아이스크림 (0) | 2024.03.18 |
---|---|
[SQL] 프로그래머스 고득점 kit - GROUP BY / 입양 시각 구하기(1) (0) | 2024.03.15 |
[SQL] 프로그래머스 고득점 kit - String, Date / 중성화 여부 파악하기 (0) | 2024.03.14 |
[SQL] 프로그래머스 고득점 kit - String, Date / 카테고리 별 상품 개수 구하기 (0) | 2024.03.14 |
[SQL] 프로그래머스 고득점 kit - IS NULL / 이름이 없는 동물의 아이디 (0) | 2024.03.14 |