수학 함수와 연산자
📖 약 1분🏷 SQL 기초
기본 산술 연산자
SELECT
10 + 3 AS addition, -- 13
10 - 3 AS subtraction, -- 7
10 * 3 AS multiplication, -- 30
10 / 3 AS division, -- 3 (정수 나눗셈!)
10.0/3 AS float_division, -- 3.333...
10 % 3 AS modulo, -- 1 (나머지)
2 ^ 10 AS power; -- 1024
두 정수를 나누면 결과도 정수입니다. 소수점 결과가 필요하면 하나를
NUMERIC이나FLOAT로 캐스팅하세요:10::numeric / 3
반올림 함수
SELECT
ROUND(3.14159, 2), -- 3.14
ROUND(3.5), -- 4 (반올림)
CEIL(3.1), -- 4 (올림)
FLOOR(3.9), -- 3 (내림)
TRUNC(3.9999, 2); -- 3.99 (절사)
절댓값과 부호
SELECT
ABS(-42), -- 42
SIGN(-10), -- -1
SIGN(0), -- 0
SIGN(10); -- 1
최솟값·최댓값 (행 내부)
-- 집계함수 MIN/MAX와 다름 — 같은 행의 여러 열 비교
SELECT
LEAST(10, 20, 5, 15), -- 5
GREATEST(10, 20, 5, 15); -- 20
수학 함수
SELECT
SQRT(144), -- 12 (제곱근)
POWER(2, 8), -- 256
LOG(100), -- 2 (log₁₀)
LN(2.718), -- ~1 (자연로그)
EXP(1), -- 2.718... (e의 거듭제곱)
PI(); -- 3.14159265...
실전 예제
-- 할인 가격 계산
SELECT
product_name,
price,
discount_rate,
ROUND(price * (1 - discount_rate / 100.0), 0) AS discounted_price
FROM products;
-- 페이지네이션 — 전체 페이지 수 계산
SELECT CEIL(COUNT(*)::numeric / 20) AS total_pages
FROM articles;
-- 통계 — 표준편차와 분산
SELECT
AVG(score) AS mean,
STDDEV(score) AS std_dev,
VARIANCE(score) AS variance,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY score) AS median
FROM exam_results;
난수 생성
SELECT RANDOM(); -- 0 이상 1 미만 실수
SELECT FLOOR(RANDOM() * 100) + 1; -- 1~100 사이 정수
타입 캐스팅
SELECT
'3.14'::numeric, -- 문자열 → 숫자
42::text, -- 숫자 → 문자열
CAST(price AS INT) -- 표준 SQL 방식
FROM products;
댓글
댓글을 불러오는 중...