[SQL] Advent of SQL 2024 7: 기증품 비율 계산하기

양승우·2024년 12월 9일

코드카타

목록 보기
35/58

advent S7: 기증품 비율 계산하기

문제

(생략)

코드

WITH count_gifted AS (
  SELECT
    count(artwork_id) as 'gifted_cnt' -- 73597
  FROM
    artworks
  WHERE
    credit LIKE '%gift%'
)
, count_all AS (
  SELECT
      count(artwork_id) as 'total_cnt' -- 130262
    FROM
      artworks
)
SELECT
  round(CAST(cg.gifted_cnt AS float) / ca.total_cnt*100, 3) as "ratio"
FROM
  count_gifted cg, count_all ca
;

알게된 점

전체적으로는 쉬운 난이도였으나,
SQLite에서만 이런 것인지, "정수 / 정수" 연산 결과를 정수만 반환한다는 규칙이 있었다
[sqlite3] 정수를 정수로 나눴을 때 소수점 이하도 출력되게 하려면

즉, 0.53...으로 나와야하는 결과를 소수점 다 버리고 0만 출력하게 된 것
이미 0으로 반환이 되었기 때문에 100을 곱하든 어쩌든 여전히 100으로 유지되고 있던 것이다

그렇기에 나누어지는 수를 실수 형태로 바꿔주면 문제는 바로 해결된다
(1) cast 함수를 사용하거나
(2) 값에 0.00을 더해서 실수 형태로 바꿔주면 끝

profile
어제보다 오늘 더

0개의 댓글