문제 링크: https://solvesql.com/problems/ratio-of-gifts/
기증품 비율 계산 쿼리 작성
artworks 테이블에서 credit 컬럼에 'gift'라는 표식이 포함된 데이터를 "기증품"으로 간주. WITH
gift AS (
SELECT COUNT(*) AS gift_count
FROM artworks
WHERE credit LIKE '%gift%'
),
artwork_num AS (
SELECT COUNT(*) AS total_count
FROM artworks
)
SELECT
ROUND((73597.0 / 130262.0) * 100, 3) AS donation_percentage;
쿼리 결과:
56.493%.소수점 연산을 위한 숫자 형식 지정
73597 / 130262는 0으로 결과를 내놓는다. .0을 추가하여 부동소수점(소수) 연산을 수행해야 한다.SELECT 73597.0 / 130262.0; -- 결과: 0.564933ROUND 함수로 소수점 자리수 조정
ROUND(expression, n) 함수는 결과를 소수점 n 자리까지 반올림한다. SELECT ROUND(0.564933 * 100, 3); -- 결과: 56.493WITH문을 활용한 서브쿼리 구조화
WITH를 사용해 서브쿼리를 구조화:gift: 'gift' 조건에 맞는 기증 작품의 개수를 계산.artwork_num: 전체 작품 개수를 계산.SQL 정수 나눗셈과 소수 연산의 차이
.0을 추가하거나 CAST로 타입 변환을 명시적으로 수행할 수 있다:SELECT CAST(73597 AS FLOAT) / 130262;결과를 이해하기 쉽게 표현하기 위한 포맷팅
%로 출력하려면 100을 곱한 후 반올림:SELECT ROUND((73597.0 / 130262.0) * 100, 3) AS percentage;쿼리 가독성을 높이기 위한 WITH 활용
WITH
gift AS (
SELECT COUNT(*) AS gift_count
FROM artworks
WHERE credit LIKE '%gift%'
),
artwork_num AS (
SELECT COUNT(*) AS total_count
FROM artworks
)
SELECT
ROUND((73597.0 / 130262.0) * 100, 3) AS donation_percentage;