프로그래밍/Database

[Database] 그룹별 조건 검색 - GROUP BY, HAVING

미냐님 2020. 4. 13. 20:35
728x90

그룹별 조건 검색 - GROUP BY, HAVING

  • 일반적인 검색조건 : WHERE 절에 작성
    • 집계 함수는 WHERE 절에서는 사용할 수 없음
  • 그룹에 대한 조건 : HAVING 절에 작성
    • 집계 함수는 HAVING 절에서 사용 가능
  • 예제에 사용할 데이터베이스
    • Orders 테이블

GROUP BY … HAVING

  • Orders 테이블에서 2건 이상 주문된 제품(item) 별로 제품의 주문건수와 가장 많이 주문된 개수를 검색하시오.
    (주문건수는 주문건수, 가장 많이 주문한 개수는 최대주문수로 표기)
    • 주문한 제품(item)별 : GROUP BY item HAVING COUNT(*) >= 2
    • 제품별 주문건수 : COUNT( * )
    • 최대주문수 : MAX( qty )
SELECT item, COUNT( * ) AS 주문건수, MAX( qty ) AS 최대주문수
FROM orders
GROUP BY item HAVING COUNT( * ) >= 2; 

  • Customer 테이블에서 적립금 평균이 5000원 이상인 등급 (grade)에 대해 등급별 고객 수와 적립금 평균을 검색하시오. ( 등급별 고객수를 고객수, 적립금 평균을 평균적립금으로 표기)
    • 등급별 그룹 : GROUP BY grade
    • 적립금 평균이 5000원 이상 : AVG( credit ) >= 5000
    • 등급별 고객수 : COUNT( * )
    • 적립금 평균 : AVG( credit )
SELECT grade AS 등급, COUNT( * ) AS 고객수, AVG( credit ) AS 평균적립금
FROM customer
GROUP BY grade HAVING AVG( credit ) >= 5000;    

728x90