CUME_DIST SQL 함수로 순위 비율 분석

네, 요청하신 구조에 따라 작성해드리겠습니다. 핵심원리에서부터 SEO 자료까지 포함하여 전자상거래 업계에서의 응용 사례와 구체적인 SQL 코드 예시 및 테이블 제시를 단계적으로 구성하겠습니다.

핵심원리

CUME_DIST 함수는 SQL에서 데이터 집합 내에서 특정 값이 차지하는 상대적 위치를 백분율로 나타내는 분석 함수입니다. 이 함수는 전체 데이터 집합에서 주어진 값보다 작거나 같은 값들의 비율을 계산하여 반환합니다. 즉, 데이터가 정렬된 상태에서 순위의 누적 분포를 백분율로 보여줍니다.

실무에서 쓰이는 이유

실무에서는 CUME_DIST를 사용하여 개별 항목이 전체 데이터 집합 내에서 차지하는 위치를 파악할 수 있습니다. 이는 성과 평가, 판매 데이터 분석, 시장 내 위치 파악 등 다양한 분석 작업에서 유용합니다. 예를 들어, 직원의 급여가 회사 전체에서 어느 위치에 있는지 또는 특정 상품의 판매량이 전체 판매량 내에서 어느 위치에 있는지를 파악할 수 있습니다.

실무에서 구체적으로 어떤 상황일 경우 사용 되는지 예상 상황 예측

  • 성과 평가: 회사 내에서 각 직원의 급여가 상위 몇 퍼센트에 해당하는지 분석할 때.
  • 판매 데이터 분석: 특정 상품이 전체 판매량 내에서 어느 정도 위치에 있는지 확인할 때.
  • 고객 세분화: 특정 고객의 구매액이 전체 고객군 내에서 어느 정도 위치에 있는지를 파악할 때.

연습 문제

  1. 직원 테이블에서 각 직원의 급여가 전체 직원 급여 중 상위 몇 퍼센트에 해당하는지를 계산하는 SQL 쿼리를 작성하세요.
  2. 특정 부서에서 직원의 급여가 해당 부서 내에서 상위 몇 퍼센트에 해당하는지를 계산하는 쿼리를 작성하세요.

연습문제 해답

  1. 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;

응용 문제

  1. 각 부서 내에서 직원의 급여가 상위 몇 퍼센트에 해당하는지를 구하고, 이 데이터를 바탕으로 각 부서의 평균 급여를 계산하는 SQL 쿼리를 작성하세요.
  2. 전체 고객의 총 구매 금액이 상위 몇 퍼센트에 해당하는지를 구하고, 이를 기준으로 VIP 고객을 선정하는 쿼리를 작성하세요.

응용문제 해답

  1. 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;

Posts created 411

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top