특정 부동 소수점 값
적용 대상: Databricks SQL Databricks 런타임
몇 가지 특수 부동 소수점 값은 대/소문자를 구분하지 않는 방식으로 처리됩니다.
- Inf, +Inf, Infinity, +Infinity: 양의 무한대
- -Inf, -Infinity: 음의 무한대
- NaN: 숫자가 아님
양수 및 음수 무한대 의미 체계
양수 및 음수 무한대는 다음과 같은 의미 체계를 갖습니다.
- 양의 무한대에 양수 값을 곱하면 양의 무한대를 반환합니다.
- 음의 무한대에 양수를 곱하면 음의 무한대를 반환합니다.
- 양의 무한대에 음수를 곱하면 음의 무한대를 반환합니다.
- 음의 무한대에 음수를 곱하면 양의 무한대를 반환합니다.
- 양수 또는 음수 무한대에 0을 곱하면 NaN이 반환됩니다.
- 양수 또는 음의 무한대는 그 자체가 같습니다.
- 집계에서 모든 양의 무한대 값은 함께 그룹화됩니다. 마찬가지로 모든 음의 무한대 값은 함께 그룹화됩니다.
- 양의 무한대 및 음의 무한대는 조인 키에서 일반 값으로 처리됩니다.
- 양의 무한대는 NaN보다 낮고 다른 모든 값보다 높습니다.
- 음의 무한대는 다른 모든 값보다 낮습니다.
NaN 의미 체계
표준 부동 소수점 의미 체계와 정확히 일치하지 않는 float
또는 double
형식을 처리할 때 NaN에는 다음과 같은 의미 체계가 있습니다.
- NaN = NaN은 true를 반환합니다.
- 집계에서 모든 NaN 값은 함께 그룹화됩니다.
- NaN은 조인 키에서 일반 값으로 처리됩니다.
- NaN 값은 오름차순에서 가장 마지막이며 다른 모든 숫자 값보다 큽니다.
예제
> SELECT double('infinity');
Infinity
> SELECT float('-inf');
-Infinity
> SELECT float('NaN');
NaN
> SELECT double('infinity') * 0;
NaN
> SELECT double('-infinity') * (-1234567);
Infinity
> SELECT double('infinity') < double('NaN');
true
> SELECT double('NaN') = double('NaN');
true
> SELECT double('inf') = double('infinity');
true
> SELECT COUNT(*), c2
FROM VALUES (1, double('infinity')),
(2, double('infinity')),
(3, double('inf')),
(4, double('-inf')),
(5, double('NaN')),
(6, double('NaN')),
(7, double('-infinity'))
AS test(c1, c2)
GROUP BY c2;
2 NaN
2 -Infinity
3 Infinity