집계 함수

count(*)는 null도 포함해서 갯수를 카운팅한다.
count(컬럼명)은 컬럼 내 null은 무시하고 카운팅한다.
- 날짜 데이터를 활용한 MIN/MAX
SELECT MIN(hire_date) AS earliest_hire, --오래된 날짜일수록 min, 최근일수록 max
MAX(hire_date) AS latest_hire
FROM employees;
GROUP BY, HAVING
- GROUP BY란?
- 특정 열을 기준으로 데이터를 그룹화한 후, 집계함수를 적용한다.

[예시] : 장르별 책의 합계 구하기

FROM books
GROUP BY genre -- 1. 장르별로 그룹화
* 이때 잊지 말 것! SQL 실행순서
FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT
** GROUP BY 주의사항
SELECT 절에는 GROUP BY에 포함된 기준 열과 집계 함수만 사용 가능!
집계 함수 외 다른 칼럼들은 모두 GROUP BY에 포함되어야 함.
- HAVING 이란?
- GROUP BY로 그룹화된 데이터에 조건을 추가로 적용할 때 사용된다.
[GROUP BY + HAVING 예시] : 부서별 총 급여가 10,000 이상인 부서만 선택하기
SELECT department_id, SUM(salary) AS total_salary
FROM employees
GROUP BY department_id
HAVING SUM(salary) >= 10000 -- 총 급여가 10,000 이상인 부서만 선택!
- WHERE 와 HAVING 차이점
- WHERE: 그룹화 이전에 데이터를 필터링
- HAVING: 그룹화 이후에 데이터를 필터링. "그룹화된 결과를 기준으로 조건을 적용"
결과 정렬: ORDER BY
- ORDER BY란?
- 데이터를 원하는 순서대로 정렬한다.
- 오름차순(ASC, 생략가능)
- 내림차순(DESC)
- RAND 함수
- ORDER BY와 함께 사용하면 각 행마다 랜덤한 값을 생성하고, 이를 기준으로 정렬한다.
[ORDER BY + RAND 예시] : 나이가 30 이상인 직원 중 랜덤하게 3명만 추출
SELECT *
FROM employees
WHERE age >= 30
ORDER BY RAND() -- 1. 랜덤한 값 생성
LIMIT 3 -- 2. 3명만 추출
'데이터 분석 > SQL' 카테고리의 다른 글
SQL) 윈도우 함수 (1) | 2024.12.03 |
---|---|
SQL) JOIN, UNION & UNION ALL +서브쿼리란? (2) | 2024.12.02 |
SQL) 날짜 함수 DATETIME, DATE_FORMAT (0) | 2024.11.29 |
SQL) 기본 문법 정리 (1) | 2024.11.27 |
SQL) SQL 코딩순서와 실행순서 (2) | 2024.11.26 |