SQLD 시험 내용
(a) 데이터 모델링의 이해 (출제 비중 20% : 10문제, 20점)
- 데이터 모델링의 이해 : 데이터모델의 이해 / 엔터티 / 속성 / 관계 / 식별자
- 데이터 모델과 성능 : 정규화와 성능 / 반정규화와 성능 / 대용량 데이터에 따른 성능 / DB 구조와 성능 / 분산 DB 데이터에 따른 성능
(b) SQL 기본 및 활용 (출제 비중 80% : 40문제, 80점)
- SQL 기본 : 정보 요구 사항 / DDL / DML / TCL / WHERE / FUNCTION / GROUP BY, HAVING / ORDER BY / JOIN
- SQL 활용 : 표준 조인 / 집합 연산자 / 계층형 질의 / 서브쿼리 / 그룹함수 / 윈도우 함수 / DCL / 절차형 SQL
- SQL 최적화 기본 원리 : 옵티마이저와 실행 계획 / 인덱스 기본 / 조인 수행 원리
1. GROUP BY절
GROUP BY절 :- SELECT문에 GROUP BY절을 사용해 데이터를 그룹화(Grouping) 할 수 있다.- GROUP BY절에는 Grouping 기준이 될 칼럼 또는 표현식을 콤마로 구분하여 기술한다.- Grouping 칼럼 / 표현식 들의 값이 같은 행들로 행 그룹 (group of rows)을 생성하고, 각 행 그룹당 1개인 행으로 그룹화(Grouping)
SELECT a.job, SUM(a.sal), Max(a.sal)
FROM emp a
GROUP BY a.job;
--group by절의 select에는 그룹핑 될 수 있는 것만!
--그룹화가 안 되는 empno가 들어가면 error남
EMPNO | ENAME | SAL | JOB |
1 | a | 100 | teacher |
2 | b | 100 | teacher |
3 | c | 200 | teacher |
4 | d | 300 | salesman |
JOB | SUM(SAL) | MAX(SAL) |
teacher | 400 | 200 |
salesman | 300 | 300 |
집계 함수 :
- 다중 행의 값을 입력 받아 단일 행의 값을 리턴하는 함수 (count, sum, avg, max, min)
- 집계함수를 사용하면 행 그룹별로 null을 제외한 값들이 집계된다. (단 count 함수는 0)
SELECT a.deptno, count(*) as cnt, sum(a.sal) as sum_sal, avg(a.comm as avg_comm
from emp a
group by a.deptno;
deptno | comm |
30 | |
30 | 0 |
30 | 100 |
30 | 300 |
20 |
deptno | cnt_comm | sum_comm | avg_comm |
30 | 3 | 400 | 400/3 |
20 | 0 |
* deptno가 20인 것은 행의 값이 null -> count 함수는 0 이며 그 외는 null이다.
* deptno가 30인 것 -> count 함수는 null을 제외하고 세기 때문에 3이며, avg 함수는 합계를 count 값으로 나눈다.
- 집계 함수의 인자에 연산이나 가공이 존재하면, 집계 함수 실행 전에 행 그룹 내에 있는 개별 행 단위로 수행된다.
SELECT a.deptno, COUNT(NVL(a.comm,0)) as cnt_nvl_comm
,SUM(NVL(a.comm,0)) as sum_nvl_comm
FROM emp a
GROUP BY a.deptno;
--NVL가 먼저 실행되기 때문에, comm가 없는 값을 다 0으로 치환한 수 count, sum을 실행한다.
- GROUP BY절 없이 SELECT 절에 집계 함수가 사용되면, 전체 행이 하나의 행 그룹이 된다.
- COUNT(*)은 NULL을 포함해 행 그룹에 속한 전체 행의 개수를 리턴
'# Work > Data' 카테고리의 다른 글
[SQLD] 단일 행 함수 : SQL 기본 및 활용 / SQL 활용 (0) | 2023.02.21 |
---|---|
[SQLD] JOIN : SQL 기본 및 활용 / SQL 활용 (0) | 2023.02.21 |
[SQLD] SQL 기본 구조 : SQL 기본 및 활용 / SQL 기본 (0) | 2023.02.21 |
[SQLD] 계층형 질의 : SQL 기본 및 활용 / SQL 활용 (0) | 2023.02.20 |
[SQLD] 그룹 함수 : SQL 기본 및 활용 / SQL 활용 (0) | 2023.02.20 |