순간을 기록으로

[MySQL] 데이터베이스 수치형 데이터 연산하기 본문

Computer Science/Database

[MySQL] 데이터베이스 수치형 데이터 연산하기

luminous13 2021. 11. 12. 16:31

때로는 데이터베이스에서 총액과 같은 값을 구하고 싶을 때가 있습니다. 그럴 때에는 값*수량을 데이터베이스에서 할 수 있습니다.

 

예시 테이블

 

 

CASE1. 각 아이템 별 총액 구하기

 

열 * 열을 통해 곱셈을 할 수 있습니다. 근데 열의 이름을 바꾸고 싶지 않나요?

 

CASE2. 'AS'를 이용하여 열 별명(ALIAS) 설정하기

열의 이름이 amount으로 변경되었습니다. AS 키워드는 참고로 생략이 가능합니다. 따라서

SELECT *, price * quantity amount FROM sample34;위의 명령어와 같은 결과를 가져옵니다. 별명을 설정할 때 만약 한글로 설정하고 싶으면 쌍따옴표로 감싸서 설정해야 합니다.

 

CASE3. 총액을 구한 뒤 총액이 2000이상인 행 검색하기

2000이상인 조건이 붙었으니 WHERE구를 이용하여 조건에 맞는 행을 검색할 수 있습니다. 이 때 WHERE구에 별명 입력하면 검색이 안되는 것에 주의합니다. 왜냐하면 SELECT 구보다 WHERE구가 내부에서 먼저 처리되기 때문입니다. 별명은 SELECT 내부 처리를 할 때 붙여지므로 WHERE에서는 별명을 사용할 수 없습니다.

 

NULL의 연산

SQL에서 NULL의 연산 결과는 모두 NULL 입니다.

  • NULL + 1 = NULL
  • 1 + NULL = NULL
  • 1 + 2*NULL = NULL
  • 1 / NULL = NULL

 

CASE4. 총액 구하고 총액을 기준으로 내림차순 정렬하기

자세히 살펴보면 ORDER BY에서는 별명을 사용할 수 있다. 그 이유는 ORDER BY는 서버에서 가장 마지막으로 처리되기 때문입니다. 

 

연산자 말고 함수로 연산하기

+,-,*,/와 같은 연산자 말고 함수로도 연산을 할 수 있습니다. 함수는 다음과 같이 사용합니다.

함수명(인수1, 인수2, ...)

 

예시 테이블

부가세를 포함하는 값이 담긴 테이블

 

CASE5. 반올림하여 소수를 정수로 만들기

 

CASE6. 반올림 지정하기( 둘째 자리에서 반올림하기)

 

CASE7. ROUND 둘째 인수를 줘서 10단위에서 반올림하기

Comments