[05] GROUP BY 절
(1) GROUP BY
- GROUP BY 는 말 그대로 데이터를 그룹별로 묶을 수 있도록 해주는 절이다.
GROUP 뒤에 수단의 전치사인 BY가 붙었기 때문에 GROUP BY 뒤에는 그룹핑의 기준이 되는 컬럼이 오게 된다.
컬럼은 하나가 될 수도 있고 그 이상이 될 수도 있다.
(2) 집계 함수
- 데이터를 그룹별로 나누면 그룹별로 집계 데이터를 도출하는 것이 가능해진다.
COUNT(*) | 전체 ROW를 COUNT하여 반환 |
COUNT(컬럼) | 컬럼값이 NULL인 ROW를 제외하고 COUNT하여 반환 |
COUNT(DISTINCT 컬럼) | 컬럼값이 NULL이 아닌 ROW에서 중복을 제거한 COUNT를 바환 |
SUM(컬럼) | 컬럼값들의 합계를 반환 |
AVG(컬럼) | 컬럼값들의 평균을 반환 |
MIN(컬럼) | 컬럼값들의 최솟값을 반환 |
MAX(컬럼) | 컬럼값들의 최댓값을 반환 |
(3) HAVING
- HAVING 절은 GROUP BY 절을 사용할 때 WHERE처럼 사용하는 조건절이라고 생각하면 되는데 주로
데이터를 그룹핑한 후 특정 그룹을 골라낼 때 사용한다.
HAVING 절은 논리적으로 GROUP By 절 이후에 수행되기 때문에 그룹핑 후에 가능한 집계함수로
조건을 부여할 수 있다.
- HAVING 절은 논리적으로 SELECT절 전에 수행되기 때문에 SELECT 절에 명시되지 않은 집계함수로도 조건을
부여할 수 있다.
- 주의할 점은 WHERE 절을 사용해도 되는 조건까지 HAVING 절로 써버리면 성능상 불리할 수 있다는 것이다.
(수행 시 오류가 나지는 않는다)
- 왜냐하면 WHERE 절에서 필터링이 선행되어야 GROUP BY를 할 데이터량이 줄어들기 때문이다.
GROUP By 는 비교적 많은 비용이 드는 작업이므로 수행전에 데이터량을 최소로 줄여놓는 것이 바람직하다.
[06] ORDER BY 절
- ORDER BY 절을 사용하면 SELECT한 데이터를 정렬할 수 있으며 ORDER BY 절을 따로 명시하지 않으면 데이터는 임의의 순서대로 출력된다.
- ASC(Ascending) : 오름차순
- DESC(Descending) : 내림차순
* 옵션 생랼 시 ASC가 기본값이 된다.
TIP
정렬의 기준이 되는 컬럼에 NULL 데이터가 포함되어 있을 경우 데이터베이스 종류에 따라 정렬의 위치가 달라지는 데 Oracle의 경우에는 NULL을 최댓값으로 취급하기 때문에 오름차순을 했을 경우 맨 마지막에 위치하게 된다.
(SQL Server는 반대)
만약 순서를 변경하고 싶다면 ORDER BY 절에 NULLS FIRST, NULLS LAST 옵션을 써서
NULL의 정렬상 순서를 변경할 수 있다.
'자격증 > SQLD' 카테고리의 다른 글
SQL 기본 및 활용 - SQL활용 - 서브쿼리 (Subquery) (0) | 2024.03.02 |
---|---|
SQL 기본 및 활용 - SQL기본 - JOIN (0) | 2024.03.02 |
SQL 기본 및 활용 - SQL기본 - WHERE절 (0) | 2024.02.29 |
[SQLD] 2024 SQLD 일정 공유 및 준비 (변경사항) (0) | 2024.02.28 |
SQL 기본 및 활용 - SQL기본 - 함수(숫자, 날짜, 변환, NULL) (2) | 2024.02.27 |