데이터 분석

[Day 7] solvesql | Advent of SQL 2024 | 기증품 비율 계산하기💡 본문

SQL/solvesql

[Day 7] solvesql | Advent of SQL 2024 | 기증품 비율 계산하기💡

딱한아이 2024. 12. 7. 16:56
기증품 비율 계산하기

 

문제 조건

1. 소장품 중 부분 기증품을 포함한 기증품의 비율을 계산

2. 백분율로 계산하며, 소수점 아래 넷째 자리에서 반올림 해 셋째 자리까지 표시

 

Solution
 WITH T1 AS ( -- 비추
   SELECT 
          credit,
          CASE WHEN LOWER(credit) LIKE '%gift%' THEN 1 ELSE 0 END AS is_gift
   FROM artworks
  )
   SELECT ROUND(AVG(is_gift)*100, 3) as ratio
   FROM T1

 

credit 컬럼에 'gift'라는 단어의 등장 여부 확인 → CASE 문으로 이진값 변환

CTE를 생성하고 AVG 함수를 통해 기증품 비율을 출력

 

피드백
SELECT ROUND(SUM(CASE WHEN LOWER(credit) LIKE '%gift%' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 3) AS ratio
FROM artworks

SELECT ROUND(COUNT(CASE WHEN LOWER(credit) LIKE '%gift%' THEN artwork_id END) * 100.0 / COUNT(*), 3) AS ratio
FROM artworks

/*
SELECT ROUND(SUM(CASE WHEN LOWER(credit) REGEXP 'gift' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 3) AS ratio 
FROM artworks
*/

 

CTE 작성 없이 한 단계로도 쿼리 작성이 가능하다.

✅SUM 으로 'gift'가 포함된 항목 개수를 집계

✅COUNT(*) 로 전체 소장품 개수를 집계

✔️ 0209 0813 복습