0Pricing
SQL Academy · 강의

정수 나눗셈과 소수 나눗셈

형 변환으로 예상하지 못한 결과를 피합니다.

정수 나눗셈과 소수 나눗셈은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

놀라운 결과

문제 하나로 시작해 보겠습니다. 다음 쿼리가 무엇을 반환할 것 같나요?

0.5라고 예상했다면 놀랄 수 있습니다. 많은 SQL 데이터베이스에서는 두 정수를 나누면 정수 결과가 나오므로 소수 부분이 완전히 사라집니다.

SELECT 1 / 2 AS result;

정수 나눗셈 설명

나눗셈의 두 피연산자가 모두 정수이면 SQL은 정수 나눗셈을 수행합니다. 결과는 0을 향해 버림되므로 반올림되지 않고 정수 부분만 남습니다.

따라서 1 / 2 = 0, 7 / 3 = 2, 9 / 4 = 2입니다. 소수 부분은 조용히 버려집니다.

SELECT 7 / 3 AS truncated_result;

정수 나눗셈 추가 예시

다음은 하나의 쿼리에서 정수 나눗셈을 사용하는 여러 예시입니다. 모든 결과에서 소수 부분이 사라지는 것을 확인하세요. 정수 리터럴이나 정수 열만 포함된 표현식에서는 이러한 동작이 일관되게 나타납니다.

SELECT
  10 / 4  AS ten_div_four,
  9  / 2  AS nine_div_two,
  1  / 3  AS one_div_three,
  6  / 6  AS six_div_six;

CAST로 문제 해결하기

소수 나눗셈을 확실하게 사용하려면 피연산자 중 하나 이상을 소수 자료형으로 CAST하는 것이 가장 좋습니다. CAST(value AS DECIMAL) 또는 CAST(value AS NUMERIC)은 SQL에 해당 숫자를 부동 소수점 값으로 취급하라고 알려 주므로, 나눗셈에서 정밀한 결과가 반환됩니다.

SELECT CAST(1 AS DECIMAL) / 2 AS result;

양쪽 모두 CAST하기

소수 결과를 얻으려면 나눗셈의 한쪽만 CAST하면 됩니다. SQL이 다른 피연산자를 자동으로 변환하기 때문입니다. 그러나 양쪽 모두를 CAST하면 의도가 명확해지고 나중에 코드를 읽을 때 혼동을 피할 수 있습니다.

SELECT
  CAST(7 AS DECIMAL) / CAST(3 AS DECIMAL) AS both_cast,
  CAST(7 AS DECIMAL) / 3                   AS one_cast;

소수 리터럴 사용하기

또 다른 간단한 방법은 피연산자 하나에 .0을 추가하여 소수 리터럴로 작성하는 것입니다. SQL은 1.0을 소수로 인식하므로 전체 표현식에서 소수 산술 연산을 사용하게 됩니다.

이는 빠르게 작성하는 임시 쿼리에서 유용하지만, 운영 코드에서는 CAST가 더 명확합니다.

SELECT 1.0 / 2  AS decimal_result,
       7.0 / 3  AS another_result;

실무에서 생기는 함정: 열 데이터

이 문제는 정수 열을 다룰 때 특히 심각합니다. 판매 목표를 추적하는 테이블을 생각해 보세요. 정수 열을 나누면 정수 결과가 나오므로, 실제로는 0.75여야 하는 전환율이 0이 될 수 있습니다.

CREATE TABLE sales_targets (
  rep         TEXT,
  achieved    INT,
  target      INT
);

INSERT INTO sales_targets VALUES
  ('Alice', 75, 100),
  ('Bob',   3,  4),
  ('Carol', 9,  10);

SELECT rep,
       achieved / target AS wrong_rate
FROM   sales_targets;

열 나눗셈 수정

분자 열에 CAST를 적용하면 나눗셈이 이제 실제 변환율을 소수로 반환합니다. 분모는 자동으로 승격됩니다.

그다음 100.0을 곱하면 백분율을 구할 수 있으며, 이때도 계속 소수 연산을 사용합니다.

SELECT rep,
       CAST(achieved AS DECIMAL) / target          AS conversion_rate,
       CAST(achieved AS DECIMAL) / target * 100.0  AS pct
FROM   sales_targets;

소수 정밀도 제어

CAST에서 정밀도와 스케일을 지정하면 저장할 소수 자릿수를 제어할 수 있습니다. DECIMAL(10, 2)는 전체 자릿수가 최대 10자리이고 소수점 아래가 2자리라는 뜻입니다. 뒤에 불필요한 자릿수가 많이 붙는 대신 깔끔하게 반올림된 결과를 원할 때 유용합니다.

SELECT CAST(CAST(1 AS DECIMAL(10,4)) / 3 AS DECIMAL(10,2)) AS rounded_result;

나눗셈 후 ROUND

때로는 내부적으로 최대 정밀도로 계산한 다음 최종 표시 값을 반올림하고 싶을 수 있습니다. ROUND 함수에는 값과 유지할 소수 자릿수를 전달합니다.

항상 먼저 소수 연산으로 나눈 다음 반올림하세요. 나누기 전에 반올림하면 안 됩니다.

SELECT
  ROUND(CAST(1 AS DECIMAL) / 3, 4)  AS four_places,
  ROUND(CAST(1 AS DECIMAL) / 3, 2)  AS two_places,
  ROUND(CAST(1 AS DECIMAL) / 3, 0)  AS zero_places;

정수 나눗셈이 유용한 경우

정수 나눗셈이 항상 오류인 것은 아닙니다. 때로는 바로 필요한 결과입니다. 예를 들어 총 분 수를 정수 시간으로 변환할 때는 의도적으로 정수 나눗셈을 사용합니다. 중요한 점은 실수로 정수 나눗셈을 하게 두지 말고, 정수 나눗셈과 소수 나눗셈 중 하나를 의식적으로 선택하는 것입니다.

SELECT
  137 / 60  AS full_hours,
  137 % 60  AS remaining_minutes;

빠른 확인

SQL에서 정수 나눗셈과 소수 나눗셈을 어떻게 처리하는지 이해했는지 확인해 보세요.

레슨 요약

이 레슨에서는 SQL이 정수 사이의 나눗셈을 처리하는 방식을 배웠습니다.

  • 정수 / 정수는 결과를 잘라내므로 소수 부분이 조용히 사라집니다.
  • 피연산자 중 하나 이상에 CAST(value AS DECIMAL)을 사용하면 소수 나눗셈을 강제할 수 있습니다.
  • 1.0과 같은 소수 리터럴을 작성해도 식이 소수 연산으로 승격됩니다.
  • 나눗셈 후 ROUND를 사용하면 표시할 소수 자릿수를 제어할 수 있습니다.
  • 정수 나눗셈은 분을 시간으로 변환하는 경우처럼 의도적으로 사용하기도 합니다. 하지만 항상 실수가 아닌 의식적인 선택으로 사용해야 합니다.

정수 열을 나눌 때마다 이 함정을 주의하세요. SQL 쿼리에서 조용히 발생하며 발견하기 어려운 버그의 가장 흔한 원인 중 하나입니다.

자주 묻는 질문

“정수 나눗셈과 소수 나눗셈” 강의는 무료인가요?

네 — “정수 나눗셈과 소수 나눗셈” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“정수 나눗셈과 소수 나눗셈”에서 뭘 배우나요?

형 변환으로 예상하지 못한 결과를 피합니다. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

SQL Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“정수 나눗셈과 소수 나눗셈” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 산술 연산과 연산자
  2. 반올림과 버림
  3. 정수 나눗셈과 소수 나눗셈
  4. 유용한 수학 함수
← SQL Academy(으)로 돌아가기