목차
"Everything is available basically for free. You can learn anything you want for free." - Elon Musk의 인터뷰 중
머스크의 말처럼 모두 무료로 접할 수 있고 무엇이든 할 수 있으니..
무료로 접할 수 있는 정보들을 제게 맞게 최적화해서 정리해보려고 합니다.
이 글에선 산술 연산자에 대해 자세히 알아보겠습니다.
아래는 예시로 사용할 products 테이블입니다.
product_id | product_name | price | quantity |
1 | Apple | 1.50 | 10 |
2 | Banana | 0.80 | 30 |
3 | Orange | 1.20 | 20 |
4 | Pear | 2.00 | 15 |
1. 산술 연산자 사용
산술 연산자 연산의 우선순위는 괄호() → 곱하기(*) → 나누기(/) → 더하기(+) → 빼기(-) 입니다.
SELECT product_name, price, price * 0.9 AS discounted_price
FROM products;
해석 > products 테이블에서 product_name, price와 price 곱하기 0.9한 값을 discounted_price라는 이름으로 조회해줘
결과)
product_name | price | discounted_price |
Apple | 1.50 | 1.35 |
Banana | 0.80 | 0.72 |
Orange | 1.20 | 1.08 |
Pear | 2.00 | 1.80 |
2. 주의사항
산술연산자 자체는 그냥 수학에서 배웠던 것처럼 활용하면 돼서 크게 어려움이 없어 예시를 더 적지는 않았습니다.
다만, 산술 연산자를 사용할 때 주의할 점은 NULL 값이 포함된 경우입니다. NULL 값과 어떤 숫자를 계산하면 결과는 항상 NULL이 되므로, 이를 고려한 처리가 필요합니다. 일반적으로는 COALESCE 또는 NULLIF 함수를 사용합니다.
또한, 0으로 처리했을 때, 혹시나 나누기가 들어가게 되면 분모의 0은 수학적으로 계산이 불가하기 때문에 이런 경우도 미리 감안하여 쿼리를 짜야합니다.
아래는 예시로 사용할 product1 테이블입니다.
product_id | product_name | price | quantity |
1 | Apple | 1.50 | 10 |
2 | Banana | 0.80 | 30 |
3 | Orange | 1.20 | 20 |
4 | Pear | 2.00 | 15 |
5 | Strawberry | 1.70 | NULL |
SELECT product_name, price, quantity,
CASE
WHEN IFNULL(quantity,0) > 0 THEN price / quantity
ELSE 0
END AS price_per_item
FROM product1;
해석 > product1 테이블에서 product_name, price, quantity와 (quantity가 null이면 0을 아니면 quantity를 반환한 결과가 0보다 크다면 price/quantity를 계산해주고 그게 아니라면 0을 반환하는) price_per_item을 조회해줘
결과)
product_name | price | quantity | price_per_item |
Apple | 1.50 | 10 | 0.15 |
Banana | 0.80 | 30 | 0.027 |
Orange | 1.20 | 20 | 0.06 |
Pear | 2.00 | 15 | 0.133 |
Strawberry | 1.70 | NULL | 0.0 |
위에서 나온 CASE 문은 SQL에서 조건부 로직이 필요할 때 사용합니다. 엑셀의 if문 같은 것이라 생각하면 이해가 편합니다.
그래서 참일 때의 값, 참이 아닐 때의 값을 부여해줘야 합니다. 그리고 끝에 end로 끝났다는 것을 표현해줍니다.
3. 참고 문헌
통계 교육원 SQL 강의: 데이터 분석을 위한 SQL 입문(2023) - https://sti.kostat.go.kr/coresti/site/main.do
부스트코스 SQL 강의: 기초 데이터 분석을 위한 핵심 SQL - https://www.boostcourse.org/
'SQL > SQL 스터디' 카테고리의 다른 글
집합 연산자 파헤치기 - 문과생 SQL 독학 시리즈8 (0) | 2023.04.30 |
---|---|
논리 연산자 파헤치기 - 문과생 SQL 독학 시리즈7 (0) | 2023.04.30 |
ORDER BY 파헤치기 - 문과생 SQL 독학 시리즈5 (0) | 2023.04.30 |
GROUP BY와 HAVING 파헤치기 - 문과생 SQL 독학 시리즈4 (0) | 2023.04.29 |
Where 파헤치기 - 문과생 SQL 독학 시리즈3 (0) | 2023.04.29 |
댓글