단일행 함수는 한 행을 한 행으로 바꾸고, 집계 함수는 여러 행을 하나의 결과로 요약합니다. 이 차이를 구분하지 않으면 GROUP BY 규칙과 함께 오류가 자주 발생합니다.
핵심 체크포인트
- 단일행 함수는 한 줄씩 가공하고, 집계 함수는 여러 행을 요약합니다.
- 문자, 숫자, 날짜, 변환, NULL 처리 함수는 실습에서 반복 출현합니다.
- 집계 함수는 GROUP BY 규칙과 세트로 기억해야 합니다.
주제별 설명
단일행 함수
한 행을 입력받아 한 행의 값으로 반환하는 함수 묶음입니다.
- 문자, 숫자, 날짜, 변환, NULL 처리 함수가 대표적입니다.
- SELECT, WHERE, ORDER BY 어디에서든 자주 사용됩니다.
문자함수
`UPPER`, `LOWER`, `SUBSTR`, `LENGTH`, `CONCAT`처럼 문자열을 다루는 함수입니다.
- 대소문자 통일, 일부 문자 추출, 길이 계산, 문자열 결합에 사용합니다.
- 검색 조건이나 표시용 컬럼을 만들 때 특히 많이 쓰입니다.
SELECT UPPER(member_name) AS upper_name,
SUBSTR(email, 1, 5) AS email_head,
LENGTH(member_name) AS name_len
FROM members;숫자함수
`ROUND`, `TRUNC`, `MOD`처럼 수치를 조정하거나 나머지를 계산하는 함수입니다.
- ROUND는 반올림, TRUNC는 버림, MOD는 나머지 계산입니다.
- 가격, 점수, 평균 결과를 보기 좋게 다듬을 때 자주 사용합니다.
날짜함수
`SYSDATE`, `ADD_MONTHS`, `MONTHS_BETWEEN`으로 날짜 계산을 수행합니다.
- 현재 시각을 기준으로 기간 비교나 만료일 계산을 할 수 있습니다.
- 날짜는 문자처럼 다루면 오류가 생기기 쉬워 함수 사용 습관이 중요합니다.
SELECT order_id,
ordered_at,
ADD_MONTHS(ordered_at, 1) AS next_month_date
FROM orders;변환함수
`TO_CHAR`, `TO_DATE`, `TO_NUMBER`로 데이터 타입을 명시적으로 바꾸는 함수입니다.
- 날짜와 숫자를 문자열로 바꾸거나 반대로 되돌릴 때 사용합니다.
- 형 변환을 명확히 적으면 NLS 설정 차이로 생기는 혼란을 줄일 수 있습니다.
NULL 처리 함수
`NVL`, `NVL2`, `COALESCE`, `NULLIF`로 비어 있는 값을 다루는 함수입니다.
- NVL은 단일 대체값, COALESCE는 여러 후보 중 첫 번째 비NULL 값을 찾는 데 적합합니다.
- NULLIF는 두 값이 같으면 NULL을 반환해 비교 로직을 간단히 만들 수 있습니다.
SELECT member_name,
NVL(city, 'UNKNOWN') AS city_name,
COALESCE(phone_no, mobile_no, 'NO CONTACT') AS contact_no
FROM members;집계 함수
여러 행을 하나의 요약 값으로 만드는 함수 묶음입니다.
- 대표적으로 COUNT, SUM, AVG, MIN, MAX가 있습니다.
- 집계 함수는 GROUP BY, HAVING, 분석 함수와 함께 자주 엮입니다.
COUNT / SUM / AVG / MIN / MAX
행 수, 합계, 평균, 최솟값, 최댓값을 계산하는 기본 집계 함수입니다.
- COUNT(*)는 행 수 자체, COUNT(컬럼)은 NULL이 아닌 행 수를 셉니다.
- AVG는 숫자 컬럼에만 적용되고, NULL은 계산에서 자동 제외됩니다.
SELECT grade_code,
COUNT(*) AS member_cnt,
AVG(point_score) AS avg_point
FROM members
GROUP BY grade_code;실습 흐름 추천
- 문자함수와 숫자함수를 SELECT 절에서 먼저 테스트합니다.
- 날짜와 변환 함수는 출력 포맷과 계산 결과가 맞는지 함께 확인합니다.
- 집계 함수는 GROUP BY를 붙이며 결과 행 수가 어떻게 줄어드는지 비교합니다.
이론만 읽지 말고 바로 blacksql.sqld.kr에서 실행해보고, 문제 풀이 감각은 www.sqld.kr에서 이어가면 학습 속도가 훨씬 빨라집니다.
자주 묻는 질문
처음에는 NVL로 NULL 대체 감각을 잡고, 이후 여러 후보를 순서대로 검사해야 할 때 COALESCE로 확장하면 이해가 쉽습니다.
COUNT(컬럼)은 해당 컬럼이 NULL인 행을 세지 않기 때문입니다. NULL 포함 여부를 항상 함께 봐야 합니다.