[solvesql] 기증품 비율 계산하기

yenpkr·2025년 3월 24일
0

sql

목록 보기
67/91
post-thumbnail

문제

제출

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()

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%'

0개의 댓글