데이터 처리 도구/SQL

[MySQL] Numeric Functions and Operators (1)

yourhm 2022. 8. 25. 19:06

소수점 이하 숫자 다루기

ROUND(7.825, 2)     -- 7.83
TRUNCATE(7.825, 2)  -- 7.82
CEIL(7.825)         -- 8
FLOOR(7.825)        -- 7

ROUND(컬럼명 or 값, n)

: 값을 소수점 이하 n자리수로 반올림해라.

 

TRUNCATE(컬럼명 or 값, n)

: 값을 소수점 이하 n자리수까지 남기고, 나머지 버려라.

 

CEIL(컬럼명 or 값)

: 값의 소수점 이하를 올림해서 정수로 반환해라.

 

FLOOR(컬럼명 or 값)

: 값의 소수점 이하를 버림해서 정수로 반환해라.

 

 

제곱, 제곱근 연산하기

POWER(3, 2)  -- 9
POW(3, 2)    -- 9
SQRT(9)      -- 3

POWER(컬럼명 or 값, n)

POW(컬럼명 or 값, n)

: 값을 n 제곱해서 반환해라.

 

SQRT(컬럼명 or 값)

: 값의 제곱근을 반환해라.

 

💡n 제곱근을 구하려면

⇒ POWER(컬럼명 or 1/n)

: 값의 n 제곱근을 반환해라. = 값을 1/n 제곱해서 반환해라.

 

 

몫, 나머지, 절대값 연산하기

-- 몫 구하기
11 DIV 2    -- OUTPUT: 5 (소수로 표현한 원래 몫은 5.5)
11 DIV 2.5  -- OUTPUT: 4 (소수로 표현한 원래 몫은 4.4)

-- 나머지 구하기
MOD(11, 2)  -- OUTPUT: 1
11 % 2      -- OUTPUT: 1

-- 절대값 구하기
ABS(-12.1)  -- OUTPUT: 12.1

컬럼명 or 값 DIV n

- 정수 나눗셈 (Integer division): 값을 n으로 나눴을 때의 소수점 오른쪽 부분은 버리고 몫만 반환해라.

- 피연산자(컬럼명 or 값, n)들 중 어느 하나라도 정수가 아닌 타입이 있으면, 피연산자를 소수(DECIMAL)로 바꾸어서 소수 나눗셈으로 연산한 후 정수 타입(BIGINT)으로 변환하여 반환한다. 이 때 결과가 BIGINT 범위를 초과하면 오류가 발생한다. (BIGINT 범위는 MySQL 공식문서 링크 참고하기 -> https://dev.mysql.com/doc/refman/9.0/en/integer-types.html)

 

MOD(컬럼명 or 값, n)

- 값을 n으로 나눴을 때의 나머지를 반환해라.

- '%' 기호를 사용하여 동일하게 연산하면 컬럼명 or 값 % n

 

ABS(컬럼명 or 값)

- 값의 절대값을 반환해라.

 

 

분산

VAR_POP(x)   -- 모분산 
VAR_SAMP(x)  -- 표본 분산

모분산을 이렇게 나타내는 것도 가능하다. ⇒ VARIANCE(x) 

 

 

데이터 타입

Integer Types (Exact Value)

- INTEGER

- INT

- SMALLINT

- TINYINT

- MEDIUMINT

- BIGINT

 

Fixed-Point Types (Exact Value)

- DECIMAL

- NUMERIC

 

Floating-Point Types (Approximate Value)

- FLOAT

- DOUBLE

 

 

 

[참고자료]

MySQL Documentation - Reference Manual (Numeric Functions and Operators)

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

 

MySQL Documentation - Reference Manual (Numeric Functions > Arithmetic Operators)

https://dev.mysql.com/doc/refman/9.0/en/arithmetic-functions.html

 

MySQL Documentation - Reference Manual (Numeric Data Types)

https://dev.mysql.com/doc/refman/9.0/en/numeric-types.html