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을 더해서 실수 형태로 바꿔주면 끝