데이터분석/SQL

SQL 첫걸음 - 수치 연산

눌이e 2025. 3. 2. 15:24

1. 사칙 연산

연산자의 우선 순위

우선순위 연산자
1 * / %
2 + -

 

2. SELECT 구로 연산하기

SELECT * FROM sample34;

sample34 테이블의 내용 참조

 

SELECT *, price * quantity FROM sample34;

가격 * 수량으로 금액 계산하기

 

3. 열의 별명

SELECT *, price * quantity AS amount FROM sample34;

price * quantity 식에 amount라는 별명 붙이기

- 별명은 예약어 AS를 사용해 지정, AS는 생략 가능

- SELECT 구에서는 콤마(,)로 구분해 복수의 식 지정 가능, 각각의 식에 별명 붙일 수 있음

- 별명을 한글로 지정하는 경우에는 오작동하는 경우가 많아 더블쿼트("")로 둘러싸서 지정

- ASCII문자 이외의 것을 포함할 경우는 더블쿼트로 둘러싸서 지정

: SELECT *, price * quantity "금액" FROM sample34;

 

* 데이터베이스 객체명 : 더블쿼트로 둘러쌈 ex) "sample21", "sample34"

* 문자열 상수 : 싱글쿼트로 둘러쌈 ex) 'ABC', '박준용'

* 더블쿼트로 둘러싸면 예약어와 같은 이름 지정 가능 : SELECT price * quantity AS "SELECT" FROM sample34;

* 이름을 붙일 때 숫자로 시작할 수 없음 - 더블쿼트로 묶을 시 가능

 

4. WHERE 구에서 연산하기

SELECT *, price * quantity AS amount FROM sample34 WHERE price * quantity >= 2000

WHERE 구에서 금액을 계산하고 2000원 이상인 행 검색하기

- SELECT 구에서 amount라는 별명을 붙인 후 WHERE 구에서 amount로 지정하게되면 amount라는 열은 존재하지 않는다는 에러 발생함 : SQL 내부처리 순서가 WHERE ➡️ SELECT 구의 순서로 내부 처리를 함. 즉 WHERE 구의 처리가 SELECT 구보다 선행되므로 WHERE 구에서 사용한 별칭은 아직 내부적으로 지정되지 않은 상태라 에러 발생

 

*  SELECT 구에서 지정한 별명은 WHERE 구 안에서 사용할 수 없다!

 

5. NULL 값의 연산

아래 연산 결과 모두 NULL

- NULL + 1

- 1 + NULL

- 1 + 2 * NULL

- 1 /  NULL

 

* NULL로 연산하면 결과는 NULL이 된다!

 

6. ORDER BY 구에서 연산하기

SELECT *, price * quantity AS amount FROM sample34 ORDER BY price * quantity DESC;

ORDER BY 구에서 금액을 계산하고 내림차순으로 정렬하기 

- ORDER BY는 서버에서 내부적으로 가장 나중에 처리됨

- SELECT 구보다 나중에 처리되기 때문에 SELECT 구에서 지정한 별명을 ORDER BY에서도 사용할 수 있음

 

SELECT *, price * quantity AS amount FROM sample34 ORDER BY amount DESC;

ORDER BY구에서 별명을 사용해 정렬하기

 

- 서버 내부 처리 순서 : WHERE 구 ➡️ SELECT 구 (여기서 별명을 지정) ➡️ ORDER BY 구

* ORDER BY 구에서는 SELECT 구에서 지정한 별명을 사용 할 수 있음

 

7. 함수

- 10 % 3을 계산하면 결과값 1

- MOD(10,3)을 계산하면 결과값 1

* 함수도 연산자도 표기 방법이 다를 뿐 같음

 

8. ROUND 함수

SELECt * FROM sample341;

 

SELECT amount, ROUND(amount) FROM sample341;

ROUND로 반올림

 

- 반올림 자릿수 지정

: ROUND 함수는 기본적으로 소수점 첫째 자리를 기준으로 반올림한 값을 반환.

: ROUND 함수의 두 번째 인수로 반올림할 자릿수를 지정할 수 있음

SELECT amount, ROUND(amount, 1) FROM sample341;

ROUND 함수의 두 번째 인수를 저장해 소수점 둘째 자리를 반올림

* 음수로 지정해 정수부의 반올림할 자릿수도 지정할 수 있음

SELECT amount, ROUND(amount, -2) FROM sample341;