DB

[MySQL] PI, RAND, SIGN 등 특수 수학 함수 모음

인생아 2025. 7. 25. 00:40
반응형

MySQL에는 사칙 연산이나 삼각 함수 외에도 특수한 수학 연산에 사용되는 내장 함수들이 존재한다. 이들은 데이터 분석, 무작위 처리, 방향 판단, 정규화 등에 자주 사용된다. 이번 글에서는 실무에서 유용하게 쓰이는 PI(), RAND(), SIGN(), LEAST(), GREATEST(), ROUND()의 특수 사용법 등을 예제 중심으로 정리한다.

PI() 함수 – 원주율 상수

PI() 함수는 수학 상수 π(파이) 값을 반환한다. 이는 원의 둘레, 면적, 각도 계산 등에서 필수적으로 사용된다.

SELECT PI(); -- 결과: 3.141592653589793

예제: 원의 면적 계산

SELECT radius, PI() * POW(radius, 2) AS area
FROM circles;

반지름이 주어졌을 때 원의 넓이를 계산하는 수식에 활용된다.

반응형

RAND() 함수 – 무작위 난수 생성

RAND() 함수는 0 이상 1 미만의 **난수(random float)**를 반환한다. 시드 값을 지정하면 예측 가능한 값이 나온다.

SELECT RAND();      -- 예: 0.31845...
SELECT RAND(100);   -- 같은 시드 → 같은 결과

예제: 1부터 100 사이 난수 생성

SELECT FLOOR(RAND() * 100) + 1 AS random_number;

이렇게 하면 1~100 사이의 정수를 생성할 수 있다. 랜덤 추천, 테스트 데이터 생성, 샘플링 등에 매우 유용하다.

SIGN() 함수 – 부호 반환

SIGN(number) 함수는 입력 값이 양수면 1, 음수면 -1, 0이면 0을 반환한다.

SELECT SIGN(10);    -- 결과: 1
SELECT SIGN(-5.5);  -- 결과: -1
SELECT SIGN(0);     -- 결과: 0

예제: 수익/손실 방향 표시

SELECT profit, SIGN(profit) AS direction
FROM sales_data;

데이터의 증가/감소 방향을 빠르게 판단할 수 있어, 차트 색상 처리나 시각화 조건 분기에 자주 쓰인다.

LEAST(), GREATEST() 함수 – 다수 값 중 최소/최대 구하기

이 함수들은 여러 인자 중 가장 작은 값(LEAST) 또는 **가장 큰 값(GREATEST)**을 반환한다.

SELECT LEAST(10, 25, 7);      -- 결과: 7
SELECT GREATEST(10, 25, 7);   -- 결과: 25

예제: 상품 가격 범위 필터링

SELECT product_id,
       LEAST(price, max_limit) AS capped_price
FROM products;

가격 상한선을 제한하거나, 최소/최대 비교로 조건을 제한할 때 매우 유용하다.

반응형

실무 응용 예제: 데이터 정규화

SELECT value,
       ROUND(value / GREATEST(max_val, 1), 2) AS normalized_value
FROM raw_data;

GREATEST()를 이용해 0 나누기 오류를 방지하면서 정규화를 수행할 수 있다. 데이터 정제, AI 전처리, 지표 표준화에 자주 사용된다.

기타 유용 함수

  • ROUND(x): 소수점 반올림 (이미 앞에서 다뤘지만, 정수 자리 반올림용으로도 쓰임)
  • CEIL(), FLOOR(): 올림, 내림 처리
  • TRUNCATE(x, d): 특정 소수점 이하 절사
  • POWER(x, y) 또는 POW(x, y): x의 y제곱

이러한 함수들과 함께 쓰이면 계산 로직을 완성도 높게 설계할 수 있다.

정리

  • PI()는 원주율로, 면적·각도·좌표계 처리에 기본 상수로 활용된다.
  • RAND()는 무작위 숫자를 생성하며, 테스트 데이터나 추천 기능에 자주 쓰인다.
  • SIGN()은 숫자의 부호를 판단하여 방향성 분석, 시각화 로직에 유용하다.
  • LEAST()와 GREATEST()는 다수의 값 중 최소/최대 비교에 최적화되어 있다.
  • 이 특수 함수들은 복잡한 연산을 간단하게 구현할 수 있는 실무형 도구 모음이다.

참고 문서

https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html

 

반응형