HAVING절을 활용한 그룹 함수 검색

1. 핵심 원리

HAVING절을 사용하여 그룹 함수로 검색된 데이터 간의 비교를 수행합니다. 이는 그룹화된 데이터에 대해 특정 조건을 적용할 때 사용됩니다.

2. 실무에서 쓰이는 이유

HAVING절은 그룹 함수의 결과에 조건을 적용할 때 사용됩니다. WHERE절은 그룹화되기 전에 데이터 필터링에 사용되지만, HAVING절은 그룹화 후에 데이터 필터링에 사용됩니다. 이 기능은 그룹화된 데이터를 기반으로 특정 조건을 충족하는 데이터만 선택하는 데 필수적입니다.

3. 실무에서 구체적으로 사용되는 상황 예측

  • 예시 1: 연간 매출액이 특정 금액 이상인 부서의 목록을 조회할 때.
  • 예시 2: 일정 수 이상의 직원이 있는 부서의 목록을 확인할 때.
  • 예시 3: 특정 직종의 평균 급여가 일정 금액 이상인 경우 해당 직종을 필터링할 때.

4. 자주 사용되는 윈도우 표시 및 설명

HAVING절과 함께 자주 사용되는 윈도우 함수는 다음과 같습니다:

  • ROW_NUMBER(): 각 그룹 내에서 행의 순번을 매깁니다.
SELECT job, SUM(sal), ROW_NUMBER() OVER(PARTITION BY job ORDER BY SUM(sal) DESC) AS rn
FROM emp
GROUP BY job
HAVING SUM(sal) > (SELECT SUM(sal) FROM emp WHERE job='SALESMAN');
  • RANK(): 순위를 매기되, 동일한 순위가 발생할 수 있습니다.
SELECT job, SUM(sal), RANK() OVER(PARTITION BY job ORDER BY SUM(sal) DESC) AS rank
FROM emp
GROUP BY job
HAVING SUM(sal) > (SELECT SUM(sal) FROM emp WHERE job='SALESMAN');

5. 연습 문제

직업별로 평균 급여가 3000 이상인 직업의 목록을 조회하세요.

6. 연습 문제 해답 및 테이블 표시

SELECT job, AVG(sal)
FROM emp
GROUP BY job
HAVING AVG(sal) >= 3000;

7. 응용 문제

각 직업군에서 급여가 가장 높은 직원의 이름과 급여를 조회하세요.

8. 응용 문제 해답 및 테이블 표시

SELECT job, ename, sal
FROM emp
WHERE sal = (SELECT MAX(sal) FROM emp WHERE emp.job = job);

9. 전자상거래 업계에서 쓰일 수 있는 경우 예측

전자상거래 플랫폼에서 특정 제품군의 총 매출이 일정 기준 이상인 경우 해당 제품군의 목록을 조회하는 데 사용할 수 있습니다.

10. 전자상거래 업계에서 사용할 수 있는 경우 예상 상황 문제 2가지 및 그 경우에 대한 SQL 코드 작성

1) 특정 카테고리에서 총 매출이 일정 금액 이상인 카테고리를 조회하는 SQL:

SELECT category, SUM(sales)
FROM sales_data
GROUP BY category
HAVING SUM(sales) > 100000;

2) 특정 기간 동안 매출이 일정 금액 이상인 판매자의 목록을 조회하는 SQL:

SELECT seller_id, SUM(sales)
FROM sales_data
WHERE sale_date BETWEEN '2024-01-01' AND '2024-12-31'
GROUP BY seller_id
HAVING SUM(sales) > 50000;

11. 10번에 대한 SQL 코드를 시각적으로 이해하기 쉽도록 테이블 예시 작성

-- 테이블: sales_data
-- 컬럼: sale_id, seller_id, category, sales, sale_date

-- 예시 데이터:
-- sale_id | seller_id | category | sales | sale_date
-- 1       | 101       | 'Electronics' | 15000 | '2024-01-10'
-- 2       | 102       | 'Clothing'    | 20000 | '2024-02-15'
-- 3       | 101       | 'Electronics' | 25000 | '2024-03-20'
-- 4       | 103       | 'Books'       | 10000 | '2024-05-05'
-- 5       | 104       | 'Electronics' | 30000 | '2024-07-25'

[SEO 자료]

    Posts created 411

    Related Posts

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

    Back To Top