네, 요청하신 구조에 따라 작성해드리겠습니다. 핵심원리에서부터 SEO 자료까지 포함하여 전자상거래 업계에서의 응용 사례와 구체적인 SQL 코드 예시 및 테이블 제시를 단계적으로 구성하겠습니다.
핵심원리
CUME_DIST
함수는 SQL에서 데이터 집합 내에서 특정 값이 차지하는 상대적 위치를 백분율로 나타내는 분석 함수입니다. 이 함수는 전체 데이터 집합에서 주어진 값보다 작거나 같은 값들의 비율을 계산하여 반환합니다. 즉, 데이터가 정렬된 상태에서 순위의 누적 분포를 백분율로 보여줍니다.
실무에서 쓰이는 이유
실무에서는 CUME_DIST
를 사용하여 개별 항목이 전체 데이터 집합 내에서 차지하는 위치를 파악할 수 있습니다. 이는 성과 평가, 판매 데이터 분석, 시장 내 위치 파악 등 다양한 분석 작업에서 유용합니다. 예를 들어, 직원의 급여가 회사 전체에서 어느 위치에 있는지 또는 특정 상품의 판매량이 전체 판매량 내에서 어느 위치에 있는지를 파악할 수 있습니다.
실무에서 구체적으로 어떤 상황일 경우 사용 되는지 예상 상황 예측
- 성과 평가: 회사 내에서 각 직원의 급여가 상위 몇 퍼센트에 해당하는지 분석할 때.
- 판매 데이터 분석: 특정 상품이 전체 판매량 내에서 어느 정도 위치에 있는지 확인할 때.
- 고객 세분화: 특정 고객의 구매액이 전체 고객군 내에서 어느 정도 위치에 있는지를 파악할 때.
연습 문제
- 직원 테이블에서 각 직원의 급여가 전체 직원 급여 중 상위 몇 퍼센트에 해당하는지를 계산하는 SQL 쿼리를 작성하세요.
- 특정 부서에서 직원의 급여가 해당 부서 내에서 상위 몇 퍼센트에 해당하는지를 계산하는 쿼리를 작성하세요.
연습문제 해답
SELECT ename, sal, CUME_DIST() OVER (ORDER BY sal DESC) AS CUM_DIST FROM emp;
SELECT deptno, ename, sal,
CUME_DIST() OVER (PARTITION BY deptno ORDER BY sal DESC) AS CUM_DIST
FROM emp;
응용 문제
- 각 부서 내에서 직원의 급여가 상위 몇 퍼센트에 해당하는지를 구하고, 이 데이터를 바탕으로 각 부서의 평균 급여를 계산하는 SQL 쿼리를 작성하세요.
- 전체 고객의 총 구매 금액이 상위 몇 퍼센트에 해당하는지를 구하고, 이를 기준으로 VIP 고객을 선정하는 쿼리를 작성하세요.
응용문제 해답
SELECT deptno, ename, sal, CUME_DIST() OVER (PARTITION BY deptno ORDER BY sal DESC) AS CUM_DIST, AVG(sal) OVER (PARTITION BY deptno) AS AVG_SAL FROM emp;
SELECT customer_id, total_spent,
CUME_DIST() OVER (ORDER BY total_spent DESC) AS CUM_DIST
FROM customers
WHERE CUME_DIST() OVER (ORDER BY total_spent DESC) <= 0.10;
전자상거래 업계에서 쓰일 수 있는 경우
전자상거래 업계에서는 CUME_DIST
를 사용하여 고객의 구매 행동을 분석하고, 특정 제품의 시장 내 위치를 파악할 수 있습니다. 예를 들어, 특정 상품의 판매량이 전체 상품 판매량 내에서 어느 정도 위치에 있는지 파악하여 마케팅 전략을 조정할 수 있습니다.
전자상거래 업계에서 응용할 수 있는 경우의 SQL코드 예시 및 테이블 제시
테이블 구조 예시
CREATE TABLE sales (
sale_id INT PRIMARY KEY,
product_id INT,
customer_id INT,
sale_date DATE,
sale_amount DECIMAL(10, 2)
);
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(255)
);
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(255)
);
SQL 코드 예시
- 상품의 판매량이 전체 판매량 내에서 어느 위치에 있는지를 분석하기:
SELECT p.product_name, SUM(s.sale_amount) AS total_sales,
CUME_DIST() OVER (ORDER BY SUM(s.sale_amount) DESC) AS sales_rank
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY p.product_name;
- 전체 고객의 구매 금액 중 상위 10%에 해당하는 VIP 고객을 식별하기:
SELECT c.customer_name, SUM(s.sale_amount) AS total_spent,
CUME_DIST() OVER (ORDER BY SUM(s.sale_amount) DESC) AS spending_rank
FROM sales s
JOIN customers c ON s.customer_id = c.customer_id
GROUP BY c.customer_name
HAVING CUME_DIST() OVER (ORDER BY SUM(s.sale_amount) DESC) <= 0.10;