9.3. 수학 함수 및 연산자#

수학 연산자는 많은 경우에 제공됩니다.포스트그레SQL유형. 표준 수학 규칙이 없는 유형(예: 날짜/시간 유형)의 경우 후속 섹션에서 실제 동작을 설명합니다.

표 9.4은 표준 숫자 유형에 사용할 수 있는 수학 연산자를 표시합니다. 달리 명시하지 않는 한, 연산자는 수락하는 것으로 표시됩니다.숫자_유형모든 유형에 사용 가능smallint, 정수, 비긴트, 숫자, 진짜배정밀도. 수락하는 것으로 표시된 운영자적분_유형다음 유형에 사용 가능smallint, 정수비진트. 명시된 경우를 제외하고 연산자의 각 형식은 해당 인수와 동일한 데이터 유형을 반환합니다. 다음과 같은 여러 인수 데이터 유형이 포함된 호출정수 + 숫자은 이 목록의 뒷부분에 나타나는 유형을 사용하여 해결됩니다.

표 9.4. 수학 연산자

운영자

설명

숫자_유형 + 숫자_유형숫자_유형

추가

2 + 35

+ 숫자_유형숫자_유형

단항 더하기(연산 없음)

+ 3.53.5

숫자_유형 - 숫자_유형숫자_유형

뺄셈

2 - 3-1

- 숫자_유형숫자_유형

부정

- (-4)4

숫자_유형 * 숫자_유형숫자_유형

곱셈

2 * 36

숫자_유형 / 숫자_유형숫자_유형

나눗셈(적분 유형의 경우 나눗셈은 결과를 0으로 자릅니다.)

5.0 / 22.5000000000000000

5 / 22

(-5) / 2-2

숫자_유형 % 숫자_유형숫자_유형

모듈로(나머지); 에 사용 가능smallint, 정수, 비긴트숫자

5 % 41

숫자 ^ 숫자숫자

배정밀도 ^ 배정밀도배정밀도

지수화

2 ^ 38

일반적인 수학적 연습과 달리의 다양한 용도^기본적으로 왼쪽에서 오른쪽으로 연결됩니다.

2 ^ 3 ^ 3512

2 ^ (3 ^ 3)134217728

|/ 배정밀도배정밀도

제곱근

|/ 25.05

||/ 배정밀도배정밀도

큐브 루트

||/ 64.04

@ 숫자_유형숫자_유형

절대값

@ -5.05.0

적분_유형 & 적분_유형적분_유형

비트 AND

91 & 1511

적분_유형 | 적분_유형적분_유형

비트별 OR

32 | 335

적분_유형 # 적분_유형적분_유형

비트 배타적 OR

17 # 520

~ 적분_유형적분_유형

비트별 NOT

~1-2

적분_유형 << 정수적분_유형

비트 왼쪽으로 이동

1 << 416

적분_유형 정수적분_유형

비트 오른쪽으로 이동

8 22


표 9.5사용 가능한 수학 함수를 표시합니다. 이러한 함수 중 다수는 인수 유형이 다른 여러 형태로 제공됩니다. 명시된 경우를 제외하고 함수의 특정 형식은 해당 인수와 동일한 데이터 유형을 반환합니다. 교차 유형 사례는 위에서 운영자에 대해 설명한 것과 동일한 방식으로 해결됩니다. 함께 작동하는 함수배정밀도데이터는 대부분 호스트 시스템의 C 라이브러리 위에 구현됩니다. 따라서 경계 사례의 정확성과 동작은 호스트 시스템에 따라 달라질 수 있습니다.

표 9.5. 수학 함수

기능

설명

예제

복근 ( 숫자_유형 ) → 숫자_유형

절대값

복근(-17.4)17.4

cbrt ( 배정밀도 ) → 배정밀도

큐브 루트

cbrt(64.0)4

( 숫자 ) → 숫자

( 배정밀도 ) → 배정밀도

인수보다 크거나 같은 가장 가까운 정수

실(42.2)43

실(-42.8)-42

천장 ( 숫자 ) → 숫자

천장 ( 배정밀도 ) → 배정밀도

인수보다 크거나 같은 가장 가까운 정수(동일)

천장(95.3)96

( 배정밀도 ) → 배정밀도

라디안을 각도로 변환합니다.

도(0.5)28.64788975654116

div ( y 숫자, x 숫자 ) → 숫자

정수지수y/x(0쪽으로 잘림)

div(9, 4)2

erf ( 배정밀도 ) → 배정밀도

오류 범퍼카 토토

erf(1.0)0.8427007929497149

erfc ( 배정밀도 ) → 배정밀도

보완 오류 범퍼카 토토(1 - erf(x), 대규모 입력에 대한 정밀도 손실 없음)

erfc(1.0)0.15729920705028513

특급 ( 숫자 ) → 숫자

특급 ( 배정밀도 ) → 배정밀도

지수(e주어진 힘으로 상승)

exp(1.0)2.7182818284590452

팩토리얼 ( 비긴트 ) → 숫자

팩토리얼

팩토리얼(5)120

바닥 ( 숫자 ) → 숫자

바닥 ( 배정밀도 ) → 배정밀도

인수보다 작거나 같은 가장 가까운 정수

층(42.8)42

층(-42.8)-43

gcd ( 숫자_유형, 숫자_유형 ) → 숫자_유형

최대 공약수(두 입력을 나머지 없이 나누는 가장 큰 양수); 반품0두 입력이 모두 0인 경우; 에 사용 가능정수, 비긴트숫자

gcd(1071, 462)21

lcm ( 숫자_유형, 숫자_유형 ) → 숫자_유형

최소 공배수(두 입력의 정수배인 가장 작은 양수); 반품0둘 중 하나의 입력이 0인 경우; 에 사용 가능정수, 비긴트숫자

lcm(1071, 462)23562

ln ( 숫자 ) → 숫자

ln ( 배정밀도 ) → 배정밀도

자연로그

ln(2.0)0.6931471805599453

로그 ( 숫자 ) → 숫자

로그 ( 배정밀도 ) → 배정밀도

기본 10 로그

로그(100)2

로그10 ( 숫자 ) → 숫자

로그10 ( 이중 정밀도 ) → 배정밀도

기본 10 로그(동일로그)

log10(1000)3

로그 ( b 숫자, x 숫자 ) → 숫자

로그x기지로b

로그(2.0, 64.0)6.0000000000000000

min_scale ( 숫자 ) → 정수

제공된 값을 정확하게 표현하는 데 필요한 최소 소수 자릿수(소수점 이하 자릿수)

min_scale(8.4100)2

모드 ( y 숫자_유형, x 숫자_유형 ) → 숫자_유형

나머지y/x; 에 사용 가능smallint, 정수, 비긴트숫자

모드(9, 4)1

파이 ( ) → 배정밀도

대략적인 값π

파이()3.141592653589793

( a 숫자, b 숫자 ) → 숫자

( a 배정밀도, b 배정밀도 ) → 배정밀도

a의 힘으로 키워졌습니다b

힘(9, 3)729

라디안 ( 배정밀도 ) → 배정밀도

도를 라디안으로 변환

라디안(45.0)0.7853981633974483

라운드 ( 숫자 ) → 숫자

라운드 ( 배정밀도 ) → 배정밀도

가장 가까운 정수로 반올림합니다. 에 대한숫자, 관계는 0에서 반올림하여 끊어집니다. 에 대한배정밀도, 동점 분리 동작은 플랫폼에 따라 다르지만가장 가까운 짝수로 반올림가장 일반적인 규칙입니다.

라운드(42.4)42

라운드 ( v 숫자, s 정수 ) → 숫자

라운드vs소수점 자리. 동점은 0에서 반올림하여 끊어집니다.

라운드(42.4382, 2)42.44

라운드(1234.56, -1)1230

규모 ( 숫자 ) → 정수

인수의 규모(소수부의 소수 자릿수)

규모(8.4100)4

로그인 ( 숫자 ) → 숫자

로그인 ( 배정밀도 ) → 배정밀도

인수 기호(-1, 0 또는 +1)

sign(-8.4)-1

sqrt ( 숫자 ) → 숫자

sqrt ( 배정밀도 ) → 배정밀도

제곱근

sqrt(2)1.4142135623730951

trim_scale ( 숫자 ) → 숫자

후행 0을 제거하여 값의 소수 자릿수(소수점 이하 자릿수)를 줄입니다.

trim_scale(8.4100)8.41

트렁크 ( 숫자 ) → 숫자

트렁크 ( 배정밀도 ) → 배정밀도

정수로 자름(0에 가까워짐)

trunc(42.8)42

trunc(-42.8)-42

트렁크 ( v 숫자, s 정수 ) → 숫자

잘림vs소수점

trunc(42.4382, 2)42.43

width_bucket ( 피연산자 숫자, 낮음 숫자, 높음 숫자, 개수 정수 ) → 정수

width_bucket ( 피연산자 배정밀도, 낮음 배정밀도, 높음 배정밀도, 개수 정수 ) → 정수

버킷의 번호를 반환합니다.피연산자히스토그램에 포함됨개수범위에 걸쳐 있는 동일한 너비의 버킷낮음높음. 버킷에는 포함적인 하한과 제외된 상한이 있습니다. 반품0보다 작은 입력의 경우낮음또는개수+1다음보다 크거나 같은 입력의 경우높음. 만일낮음 높음, 동작은 버킷을 사용하여 미러링과 반대입니다1지금은 바로 아래에 있습니다낮음, 이제 포괄 경계가 위쪽에 있습니다.

width_bucket(5.35, 0.024, 10.06, 5)3

width_bucket(9, 10, 0, 10)2

width_bucket ( 피연산자 모든 호환 가능, 임계값 모든 호환 어레이 ) → 정수

버킷의 번호를 반환합니다.피연산자버킷의 하한값을 포함하는 배열이 나열되어 있는 경우 해당됩니다. 반품0첫 번째 하한보다 작은 입력의 경우.피연산자그리고 배열 요소는 표준 비교 연산자를 갖는 모든 유형이 될 수 있습니다.임계값배열정렬되어야 함, 가장 작은 것부터 또는 예상치 못한 결과를 얻게 됩니다.

width_bucket(now(), array['어제', '오늘', '내일']::timestamptz[])2


표 9.6난수 생성을 위한 범퍼카 토토를 보여줍니다.

표 9.6. 무작위 함수

기능

설명

무작위 ( ) → 배정밀도

0.0 <= x < 1.0 범위의 임의의 값을 반환합니다.

무작위()0.897124072839091

random_normal ( [ 평균 배정밀도 [, stddev 배정밀도 ]] ) → 배정밀도

주어진 매개변수를 사용하여 정규 분포에서 임의의 값을 반환합니다.평균기본값은 0.0이며stddev기본값은 1.0

random_normal(0.0, 1.0)0.051285419

세트 시드 ( 배정밀도 ) → 무효

후속 시드 설정무작위()그리고random_normal()호출; 인수는 -1.0에서 1.0 사이여야 합니다.

세트 시드(0.12345)


무작위()범퍼카 토토는 결정론적 의사 난수 생성기를 사용합니다. 빠르지만 암호화 애플리케이션에는 적합하지 않습니다. 참조하세요PostgreSQL : 문서 : 16 : F.28. pgcrypto - 토토 커뮤니티 기능더 안전한 대안을 위한 모듈입니다. 만일setseed()이 호출되며, 후속 결과의 시리즈는무작위()현재 세션의 호출은 재발행을 통해 반복될 수 있습니다.setseed()같은 인수를 사용합니다. 사전에 아무 것도 없이setseed()동일한 세션에서 호출, 첫 번째무작위()call은 플랫폼에 따른 임의 비트 소스로부터 시드를 얻습니다. 이 발언은 다음에도 동일하게 적용됩니다.random_normal().

표 9.7사용 가능한 삼각 함수를 보여줍니다. 이러한 각 함수는 각도를 라디안으로 측정하는 것과 각도를 도 단위로 측정하는 두 가지 변형으로 제공됩니다.

표 9.7. 삼각함수

기능

설명

아코스 ( 배정밀도 ) → 배정밀도

역코사인, 결과는 라디안

아코스(1)0

acosd ( 배정밀도 ) → 배정밀도

역코사인, 결과는 도

acosd(0.5)60

아신 ( 배정밀도 ) → 배정밀도

역사인, 결과는 라디안

아신(1)1.5707963267948966

아신드 ( 배정밀도 ) → 배정밀도

역사인, 결과(도)

아신드(0.5)30

아탄 ( 배정밀도 ) → 배정밀도

역탄젠트, 결과는 라디안

아탄(1)0.7853981633974483

( 배정밀도 ) → 배정밀도

역탄젠트, 결과는 도

및(1)45

atan2 ( y 배정밀도, x 배정밀도 ) → 배정밀도

역탄젠트y/x, 결과는 라디안

atan2(1, 0)1.5707963267948966

atan2d ( y 배정밀도, x 배정밀도 ) → 배정밀도

역탄젠트y/x, 결과(도)

atan2d(1, 0)90

cos ( 배정밀도 ) → 배정밀도

코사인, 라디안 단위의 인수

cos(0)1

cosd ( 배정밀도 ) → 배정밀도

코사인, 각도 단위의 인수

cosd(60)0.5

침대 ( 배정밀도 ) → 배정밀도

코탄젠트, 라디안 단위의 인수

침대(0.5)1.830487721712452

침대 ( 배정밀도 ) → 배정밀도

코탄젠트, 각도 단위의 인수

침대(45)1

( 배정밀도 ) → 배정밀도

사인, 라디안 단위의 인수

죄(1)0.8414709848078965

( 배정밀도 ) → 배정밀도

사인, 각도 단위의 인수

신(30)0.5

( 배정밀도 ) → 배정밀도

탄젠트, 라디안 단위의 인수

tan(1)1.5574077246549023

( 배정밀도 ) → 배정밀도

탄젠트, 각도 단위의 인수

탠드(45)1


참고

도 단위로 측정된 각도를 사용하는 또 다른 방법은 단위 변환 기능을 사용하는 것입니다.라디안()그리고도()이전에 표시됨. 그러나 각도 기반 삼각 함수를 사용하는 것이 선호됩니다. 이렇게 하면 다음과 같은 특수한 경우에 대한 반올림 오류를 피할 수 있습니다.신(30).

표 9.8사용 가능한 쌍곡선 범퍼카 토토를 보여줍니다.

표 9.8. 쌍곡선 함수

기능

설명

예제

( 배정밀도 ) → 배정밀도

쌍곡선 사인

신(1)1.1752011936438014

코시 ( 배정밀도 ) → 배정밀도

쌍곡선 코사인

코시(0)1

( 배정밀도 ) → 배정밀도

하이퍼볼릭 탄젠트

탄(1)0.7615941559557649

아신 ( 배정밀도 ) → 배정밀도

역쌍곡사인

아신(1)0.881373587019543

아코쉬 ( 배정밀도 ) → 배정밀도

역쌍곡선코사인

아코쉬(1)0

아탄 ( 배정밀도 ) → 배정밀도

역쌍곡탄젠트

아탄(0.5)0.5493061443340548


수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.