목차
3. 관계형 데이터베이스
3-4. WHERE
3-5. GROUP BY
3-5-1. 집계함수
3-5-2. HAVING
3. 관계형 데이터베이스
3-4. WHERE
WHERE 절은 특정 조건을 만족하는 행(Row)만 조회하거나 수정, 삭제하기 위해 사용하는 절입니다.
즉, 테이블의 모든 데이터를 대상으로 하는 것이 아니라, 조건에 맞는 데이터만 선택하여 작업할 수 있습니다.
✔️ WHERE 절의 특징
- 조건을 만족하는 행(Row)만 조회한다.
- SELECT, UPDATE, DELETE 문에서 사용할 수 있다.
- INSERT 문에서는 사용할 수 없다.
- SQL 실행 순서 상 FROM -> WHERE -> SELECT 순으로 처리된다.
➜ 따라서 FROM 절에서 지정한 테이블 별명(Alias)은 사용할 수 있지만, SELECT 절에서 지정한 컬럼 별명(Alias)은 사용할 수 없다.
✔️ 기본 사용법
SELECT * FROM 테이블명 WHERE 조건식;
🔹 예시

SELECT * FROM EMP WHERE DEPTNO = 30;
➜ 실행결과
EMP 테이블에서 부서번호(DEPTNO)가 30인 사원만 조회한다.

📌 NULL 비교
NULL은 값이 없는 상태를 의미하기 때문에 일반 비교 연산자로 비교할 수 없습니다.
NULL을 비교할 때는 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
3-5. GROUP BY
특정 값을 기준으로 데이터를 그룹핑할 때 사용한다.
✔️ 기본 사용법
SELECT 컬럼명, 집계함수(컬럼명) AS 별명 FROM 테이블명 GROUP BY 컬럼명;
🔹 예시

SELECT DEPTNO, SUM(SAL) AS SALS FROM EMP GROUP BY DEPTNO;
➜ 실행결과

1️⃣ 집계함수
집계함수는 여러 행(Row)의 데이터를 하나의 결과값으로 계산하는 함수입니다.
주로 개수, 합계, 평균, 최솟값, 최대값 등을 계산할 때 사용하며 GROUP BY와 함께 자주 사용됩니다.
GROUP BY 없이 집계함수를 사용하면 전체 데이터를 하나의 그룹으로 간주하여 연산합니다.
✔️ 집계함수 목록
| 함수 | 설명 |
| COUNT(컬럼명) | 입력된 컬럼에서 값이 NULL인 행을 제외한 행의 개수를 반환한다. |
| COUNT(*) | 전체 행의 개수를 반환한다. (NULL 포함) |
| SUM | 입력된 컬럼의 합을 반환한다. |
| AVG | 입력된 컬럼의 평균을 반환한다. |
| MIN | 입력된 컬럼의 최솟값을 반환한다. |
| MAX | 입력된 컬럼의 최댓값을 반환한다. |
✔️ DISTINCT
DISTINCT를 사용하면 중복된 값을 제거한 후 집계함수를 수행한다.
2️⃣ HAVING
GROUP BY 연산이 끝난 결과에 대해서 HAVING 절의 조건을 만족하는 그룹만 추출한다.
WHERE는 행(Row)를 필터링하고, HAVING은 그룹(GROUP)을 필터링한다.
✔️ 기본 사용법
SELECT 컬럼명A FROM 테이블명 GROUP BY 컬럼명A HAVING 조건;
🔹 예시

SELECT ID
FROM TBL
GROUP BY ID
HAVING COUNT(*) = 2;
➜ 실행결과

📌 SQL문 실행 순서
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY
💡 GROUP BY는 많은 데이터를 그룹화하는 과정이므로 처리 비용이 큰 편입니다.
따라서 WHERE 절로 불필요한 데이터를 먼저 제외한 후, GROUP BY를 수행하는 것이 성능상 유리합니다.
📌 핵심 정리
- COUNT(*)와 COUNT(컬럼명)의 차이
- AVG는 NULL을 제외하고 평균을 계산한다.
- DISTINCT는 중복을 제거한 후 집계한다.