문제
SQLite
내가 작성한 정답
select round((round(count(artwork_id)*100,3)/round((select count(artwork_id) from artworks),3)),3) ratio
from artworks
where credit like '%gift%'
개선한 정답
: count(artwork_id)*100은 정수의 결과이므로 정수를 정수로 나누면 정수의 결과값이 나온다→ 소수점 아래를 버린다.
→ 100을 곱할 때 100이 아니라 100.0을 곱해 실수로 변환해준다.
select round(count(artwork_id)*100.0/(select count(artwork_id) from artworks),3) ratio
from artworks
where credit like '%gift%'
gpt의 정답
: 서브쿼리가 아닌 case when으로 조건을 걸어서 조건을 만족하면 1을 주고 나머지는 null값으로 설정해서 카운트한다.
SELECT ROUND(
(COUNT(CASE WHEN credit LIKE '%gift%' THEN 1 END) * 100.0) / COUNT(*)
,3) AS ratio
FROM artworks;
Share article