WITH a AS(
SELECT count(*) cnt
FROM artworks
)
SELECT round(count(*) * 1.0 /(SELECT cnt FROM a)*100,3) ratio
FROM artworks
WHERE credit LIKE '%gift%'
COUNT(*)는 정수(INT) 값을 반환
따라서 정수 / 정수는 소수점이 버려지고 0 또는 1이 나올 수 있다.
따라서 count(*) * 1.0
에 실수 1.0을 곱해주면 실수 / 정수 여서 자동 실수로 계산된다.
round(count(*) /(SELECT cnt FROM a)*100.0,3) ratio
실수를 뒤에 곱해주면 안된다.
정수 / 정수 계산되어 소수 부분 잘리고 정수부분만 남은 후 100.0을 곱해주는 것이기 때문에 실수 계산이 아니게 된다.
따라서 자동 실수 계산이 되도록 앞에 실수를 곱해줘야 한다.
SELECT
round(
100.0 * count(*) / (
SELECT
count(*) cnt
FROM
artworks
),
3
) ratio
FROM
artworks
WHERE
credit LIKE '%gift%'