숫자 함수
숫자 함수 (Numeric Functions)
DuckDB의 숫자 타입을 위한 수학 연산자와 함수를 정리한 참조 문서예요. 연산자부터 삼각함수, 반올림, 로그까지 폭넓게 다루니 참고하기 좋답니다. 함께 살펴볼까요?
출처: 문서
본문
숫자 연산자 (Numeric Operators)
아래 표는 [숫자 타입]({% link docs/current/sql/data_types/numeric.md %})을 위한 사용 가능한 수학 연산자를 보여줘요.
| 연산자 (Operator) | 설명 (Description) | 예시 (Example) | 결과 (Result) |
|---|---|---|---|
+ |
덧셈 (Addition) | 2 + 3 |
5 |
- |
뺄셈 (Subtraction) | 2 - 3 |
-1 |
* |
곱셈 (Multiplication) | 2 * 3 |
6 |
/ |
부동소수점 나눗셈 (Float division) | 5 / 2 |
2.5 |
// |
정수 나눗셈 (Division) | 5 // 2 |
2 |
% |
나머지 (Modulo, remainder) | 5 % 4 |
1 |
** |
거듭제곱 (Exponent) | 3 ** 4 |
81 |
^ |
거듭제곱 (**의 별칭) |
3 ^ 4 |
81 |
& |
비트 AND (Bitwise AND) | 91 & 15 |
11 |
| ` | ` | 비트 OR (Bitwise OR) | `32 |
<< |
비트 왼쪽 시프트 (Bitwise shift left) | 1 << 4 |
16 |
>> |
비트 오른쪽 시프트 (Bitwise shift right) | 8 >> 2 |
2 |
~ |
비트 부정 (Bitwise negation) | ~15 |
-16 |
! |
x의 팩토리얼 (Factorial of x) |
4! |
24 |
나눗셈과 나머지 연산자 (Division and Modulo Operators)
두 개의 나눗셈 연산자가 있어요: /와 //.
피연산자 중 적어도 하나가 FLOAT나 DOUBLE이면 둘은 동등해요.
두 피연산자 모두 정수일 때 /는 부동소수점 나눗셈(5 / 2 = 2.5)을, //는 정수 나눗셈(5 // 2 = 2)을 수행해요.
지원 타입 (Supported Types)
나머지(modulo), 비트, 부정, 팩토리얼 연산자는 정수 데이터 타입에서만 동작하고, 나머지는 모든 숫자 데이터 타입에서 사용할 수 있어요.
숫자 함수 (Numeric Functions)
아래 표는 사용 가능한 수학 함수를 보여줘요.
| 이름 (Name) | 설명 (Description) |
|---|---|
@(x) |
절댓값. x가 컬럼 이름이면 괄호는 선택 사항이에요. |
abs(x) |
절댓값. |
acos(x) |
x의 역코사인을 계산해요. |
acosh(x) |
x의 역쌍곡코사인을 계산해요. |
add(x, y) |
x + y의 별칭. |
asin(x) |
x의 역사인을 계산해요. |
asinh(x) |
x의 역쌍곡사인을 계산해요. |
atan(x) |
x의 역탄젠트를 계산해요. |
atanh(x) |
x의 역쌍곡탄젠트를 계산해요. |
atan2(y, x) |
(y, x)의 역탄젠트를 계산해요. |
bit_count(x) |
설정된 비트의 수를 반환해요. |
cbrt(x) |
숫자의 세제곱근을 반환해요. |
ceil(x) |
숫자를 올림해요. |
ceiling(x) |
숫자를 올림해요. ceil의 별칭. |
cos(x) |
x의 코사인을 계산해요. |
cot(x) |
x의 코탄젠트를 계산해요. |
degrees(x) |
라디안을 도(degree)로 변환해요. |
divide(x, y) |
x // y의 별칭. |
even(x) |
0에서 멀어지는 방향으로 반올림해 다음 짝수로 반올림해요. |
exp(x) |
e ** x를 계산해요. |
factorial(x) |
! 연산자 참고. 현재 정수와 그 아래 모든 정수의 곱을 계산해요. |
fdiv(x, y) |
플로어(floor) 정의를 사용해 정수 나눗셈(x // y)을 수행하고 DOUBLE 값을 반환해요. |
floor(x) |
숫자를 내림해요. |
fmod(x, y) |
플로어 정의를 사용해 나머지 값을 계산해요. 항상 DOUBLE 값을 반환해요. |
gamma(x) |
x - 1의 팩토리얼을 보간해요. 분수 입력이 허용돼요. |
gcd(x, y) |
x와 y의 최대공약수를 계산해요. |
greatest_common_divisor(x, y) |
x와 y의 최대공약수를 계산해요. |
greatest(x1, x2, ...) |
가장 큰 값을 선택해요. |
isfinite(x) |
부동소수점 값이 유한하면 true, 그렇지 않으면 false를 반환해요. |
isinf(x) |
부동소수점 값이 무한대면 true, 그렇지 않으면 false를 반환해요. |
isnan(x) |
부동소수점 값이 숫자가 아니면 true, 그렇지 않으면 false를 반환해요. |
lcm(x, y) |
x와 y의 최소공배수를 계산해요. |
least_common_multiple(x, y) |
x와 y의 최소공배수를 계산해요. |
least(x1, x2, ...) |
가장 작은 값을 선택해요. |
lgamma(x) |
gamma 함수의 로그를 계산해요. |
ln(x) |
x의 자연로그를 계산해요. |
log(x) |
x의 밑이 10인 로그를 계산해요. |
log10(x) |
log의 별칭. x의 밑이 10인 로그를 계산해요. |
log2(x) |
x의 밑이 2인 로그를 계산해요. |
multiply(x, y) |
x * y의 별칭. |
nextafter(x, y) |
y 방향으로 x 다음의 부동소수점 값을 반환해요. |
pi() |
파이(pi) 값을 반환해요. |
pow(x, y) |
x의 y승을 계산해요. |
power(x, y) |
pow의 별칭. x의 y승을 계산해요. |
radians(x) |
도를 라디안으로 변환해요. |
random() |
0.0 <= x < 1.0 범위의 난수 x를 반환해요. |
round_even(v NUMERIC, s INTEGER) |
roundbankers(v, s)의 별칭. 반올림 절반을 짝수로 규칙을 사용해 s 소수 자릿수로 반올림해요. s < 0 값은 허용돼요. |
roundbankers(v NUMERIC, s INTEGER) |
round_even(v, s)의 별칭. 반올림 절반을 짝수로 규칙을 사용해 s 소수 자릿수로 반올림해요. s < 0 값은 허용돼요. |
round(v NUMERIC, s INTEGER) |
s 소수 자릿수로 반올림해요. s < 0 값은 허용돼요. |
setseed(x) |
random 함수에 사용할 시드(seed)를 설정해요. |
sign(x) |
x의 부호를 -1, 0 또는 1로 반환해요. |
signbit(x) |
signbit가 설정되어 있는지 여부를 반환해요. |
sin(x) |
x의 사인(sin)을 계산해요. |
sqrt(x) |
숫자의 제곱근을 반환해요. |
subtract(x, y) |
x - y의 별칭. |
tan(x) |
x의 탄젠트를 계산해요. |
trunc(x) |
숫자를 절사해요. |
xor(x, y) |
비트 XOR. |
@(x)
| 설명 (Description) | 절댓값. x가 컬럼 이름이면 괄호는 선택 사항이에요. |
| 예시 (Example) | @(-17.4) |
| 결과 (Result) | 17.4 |
| 별칭 (Alias) | abs |
abs(x)
| 설명 (Description) | 절댓값. |
| 예시 (Example) | abs(-17.4) |
| 결과 (Result) | 17.4 |
| 별칭 (Alias) | @ |
acos(x)
| 설명 (Description) | x의 역코사인을 계산해요. |
| 예시 (Example) | acos(0.5) |
| 결과 (Result) | 1.0471975511965976 |
acosh(x)
| 설명 (Description) | x의 역쌍곡코사인을 계산해요. |
| 예시 (Example) | acosh(1.5) |
| 결과 (Result) | 0.9624236501192069 |
add(x, y)
| 설명 (Description) | x + y의 별칭. |
| 예시 (Example) | add(2, 3) |
| 결과 (Result) | 5 |
asin(x)
| 설명 (Description) | x의 역사인을 계산해요. |
| 예시 (Example) | asin(0.5) |
| 결과 (Result) | 0.5235987755982989 |
asinh(x)
| 설명 (Description) | x의 역쌍곡사인을 계산해요. |
| 예시 (Example) | asinh(0.5) |
| 결과 (Result) | 0.48121182505960347 |
atan(x)
| 설명 (Description) | x의 역탄젠트를 계산해요. |
| 예시 (Example) | atan(0.5) |
| 결과 (Result) | 0.4636476090008061 |
atanh(x)
| 설명 (Description) | x의 역쌍곡탄젠트를 계산해요. |
| 예시 (Example) | atanh(0.5) |
| 결과 (Result) | 0.5493061443340549 |
atan2(y, x)
| 설명 (Description) | (y, x)의 역탄젠트를 계산해요. |
| 예시 (Example) | atan2(0.5, 0.5) |
| 결과 (Result) | 0.7853981633974483 |
bit_count(x)
| 설명 (Description) | 설정된 비트의 수를 반환해요. |
| 예시 (Example) | bit_count(31) |
| 결과 (Result) | 5 |
cbrt(x)
| 설명 (Description) | 숫자의 세제곱근을 반환해요. |
| 예시 (Example) | cbrt(8) |
| 결과 (Result) | 2 |
ceil(x)
| 설명 (Description) | 숫자를 올림해요. |
| 예시 (Example) | ceil(17.4) |
| 결과 (Result) | 18 |
ceiling(x)
| 설명 (Description) | 숫자를 올림해요. ceil의 별칭. |
| 예시 (Example) | ceiling(17.4) |
| 결과 (Result) | 18 |
cos(x)
| 설명 (Description) | x의 코사인을 계산해요. |
| 예시 (Example) | cos(pi() / 3) |
| 결과 (Result) | 0.5000000000000001 |
cot(x)
| 설명 (Description) | x의 코탄젠트를 계산해요. |
| 예시 (Example) | cot(0.5) |
| 결과 (Result) | 1.830487721712452 |
degrees(x)
| 설명 (Description) | 라디안을 도(degree)로 변환해요. |
| 예시 (Example) | degrees(pi()) |
| 결과 (Result) | 180 |
divide(x, y)
| 설명 (Description) | x // y의 별칭. |
| 예시 (Example) | divide(5, 2) |
| 결과 (Result) | 2 |
even(x)
| 설명 (Description) | 0에서 멀어지는 방향으로 반올림해 다음 짝수로 반올림해요. |
| 예시 (Example) | even(2.9) |
| 결과 (Result) | 4 |
exp(x)
| 설명 (Description) | e ** x를 계산해요. |
| 예시 (Example) | exp(0.693) |
| 결과 (Result) | 2 |
factorial(x)
| 설명 (Description) | ! 연산자 참고. 현재 정수와 그 아래 모든 정수의 곱을 계산해요. |
| 예시 (Example) | factorial(4) |
| 결과 (Result) | 24 |
fdiv(x, y)
| 설명 (Description) | 플로어 정의를 사용해 정수 나눗셈(x // y)을 수행하고 DOUBLE 값을 반환해요. |
| 예시 (Example) | fdiv(5, 2) |
| 결과 (Result) | 2.0 |
floor(x)
| 설명 (Description) | 숫자를 내림해요. |
| 예시 (Example) | floor(17.4) |
| 결과 (Result) | 17 |
fmod(x, y)
| 설명 (Description) | 플로어 정의를 사용해 나머지 값을 계산해요. 항상 DOUBLE 값을 반환해요. |
| 예시 (Example) | fmod(5, 2) |
| 결과 (Result) | 1.0 |
gamma(x)
| 설명 (Description) | x - 1의 팩토리얼을 보간해요. 분수 입력이 허용돼요. |
| 예시 (Example) | gamma(5.5) |
| 결과 (Result) | 52.34277778455352 |
gcd(x, y)
| 설명 (Description) | x와 y의 최대공약수를 계산해요. |
| 예시 (Example) | gcd(42, 57) |
| 결과 (Result) | 3 |
greatest_common_divisor(x, y)
| 설명 (Description) | x와 y의 최대공약수를 계산해요. |
| 예시 (Example) | greatest_common_divisor(42, 57) |
| 결과 (Result) | 3 |
greatest(x1, x2, ...)
| 설명 (Description) | 가장 큰 값을 선택해요. |
| 예시 (Example) | greatest(3, 2, 4, 4) |
| 결과 (Result) | 4 |
isfinite(x)
| 설명 (Description) | 부동소수점 값이 유한하면 true, 그렇지 않으면 false를 반환해요. |
| 예시 (Example) | isfinite(5.5) |
| 결과 (Result) | true |
isinf(x)
| 설명 (Description) | 부동소수점 값이 무한대면 true, 그렇지 않으면 false를 반환해요. |
| 예시 (Example) | isinf('Infinity'::float) |
| 결과 (Result) | true |
isnan(x)
| 설명 (Description) | 부동소수점 값이 숫자가 아니면 true, 그렇지 않으면 false를 반환해요. |
| 예시 (Example) | isnan('NaN'::float) |
| 결과 (Result) | true |
lcm(x, y)
| 설명 (Description) | x와 y의 최소공배수를 계산해요. |
| 예시 (Example) | lcm(42, 57) |
| 결과 (Result) | 798 |
least_common_multiple(x, y)
| 설명 (Description) | x와 y의 최소공배수를 계산해요. |
| 예시 (Example) | least_common_multiple(42, 57) |
| 결과 (Result) | 798 |
least(x1, x2, ...)
| 설명 (Description) | 가장 작은 값을 선택해요. |
| 예시 (Example) | least(3, 2, 4, 4) |
| 결과 (Result) | 2 |
lgamma(x)
| 설명 (Description) | gamma 함수의 로그를 계산해요. |
| 예시 (Example) | lgamma(2) |
| 결과 (Result) | 0 |
ln(x)
| 설명 (Description) | x의 자연로그를 계산해요. |
| 예시 (Example) | ln(2) |
| 결과 (Result) | 0.693 |
log(x)
| 설명 (Description) | x의 밑이 10인 로그를 계산해요. |
| 예시 (Example) | log(100) |
| 결과 (Result) | 2 |
log10(x)
| 설명 (Description) | log의 별칭. x의 밑이 10인 로그를 계산해요. |
| 예시 (Example) | log10(1000) |
| 결과 (Result) | 3 |
log2(x)
| 설명 (Description) | x의 밑이 2인 로그를 계산해요. |
| 예시 (Example) | log2(8) |
| 결과 (Result) | 3 |
multiply(x, y)
| 설명 (Description) | x * y의 별칭. |
| 예시 (Example) | multiply(2, 3) |
| 결과 (Result) | 6 |
nextafter(x, y)
| 설명 (Description) | y 방향으로 x 다음의 부동소수점 값을 반환해요. |
| 예시 (Example) | nextafter(1::float, 2::float) |
| 결과 (Result) | 1.0000001 |
pi()
| 설명 (Description) | 파이(pi) 값을 반환해요. |
| 예시 (Example) | pi() |
| 결과 (Result) | 3.141592653589793 |
pow(x, y)
| 설명 (Description) | x의 y승을 계산해요. |
| 예시 (Example) | pow(2, 3) |
| 결과 (Result) | 8 |
power(x, y)
| 설명 (Description) | pow의 별칭. x의 y승을 계산해요. |
| 예시 (Example) | power(2, 3) |
| 결과 (Result) | 8 |
radians(x)
| 설명 (Description) | 도를 라디안으로 변환해요. |
| 예시 (Example) | radians(90) |
| 결과 (Result) | 1.5707963267948966 |
random()
| 설명 (Description) | 0.0 <= x < 1.0 범위의 난수 x를 반환해요. |
| 예시 (Example) | random() |
| 결과 (Result) | 다양한 값 |
round_even(v NUMERIC, s INTEGER)
| 설명 (Description) | roundbankers(v, s)의 별칭. 반올림 절반을 짝수로 규칙을 사용해 s 소수 자릿수로 반올림해요. s < 0 값은 허용돼요. |
| 예시 (Example) | round_even(24.5, 0) |
| 결과 (Result) | 24.0 |
roundbankers(v NUMERIC, s INTEGER)
| 설명 (Description) | round_even(v, s)의 별칭. 반올림 절반을 짝수로 규칙을 사용해 s 소수 자릿수로 반올림해요. s < 0 값은 허용돼요. |
| 예시 (Example) | roundbankers(24.5, 0) |
| 결과 (Result) | 24.0 |
round(v NUMERIC, s INTEGER)
| 설명 (Description) | s 소수 자릿수로 반올림해요. s < 0 값은 허용돼요. |
| 예시 (Example) | round(42.4332, 2) |
| 결과 (Result) | 42.43 |
setseed(x)
| 설명 (Description) | random 함수에 사용할 시드(seed)를 설정해요. |
| 예시 (Example) | setseed(0.42) |
sign(x)
| 설명 (Description) | x의 부호를 -1, 0 또는 1로 반환해요. |
| 예시 (Example) | sign(-349) |
| 결과 (Result) | -1 |
signbit(x)
| 설명 (Description) | signbit가 설정되어 있는지 여부를 반환해요. |
| 예시 (Example) | signbit(-1.0) |
| 결과 (Result) | true |
sin(x)
| 설명 (Description) | x의 사인(sin)을 계산해요. |
| 예시 (Example) | sin(pi() / 6) |
| 결과 (Result) | 0.49999999999999994 |
sqrt(x)
| 설명 (Description) | 숫자의 제곱근을 반환해요. |
| 예시 (Example) | sqrt(9) |
| 결과 (Result) | 3 |
subtract(x, y)
| 설명 (Description) | x - y의 별칭. |
| 예시 (Example) | subtract(2, 3) |
| 결과 (Result) | -1 |
tan(x)
| 설명 (Description) | x의 탄젠트를 계산해요. |
| 예시 (Example) | tan(pi() / 4) |
| 결과 (Result) | 0.9999999999999999 |
trunc(x)
| 설명 (Description) | 숫자를 절사해요. |
| 예시 (Example) | trunc(17.4) |
| 결과 (Result) | 17 |
xor(x, y)
| 설명 (Description) | 비트 XOR. |
| 예시 (Example) | xor(17, 5) |
| 결과 (Result) | 20 |