GROUP BY, HAVING

기록하는 용도·2022년 9월 13일
0

GROUP BY ~ HAVING

GROUP BY : 특정 컬럼을 기준으로 데이터를 그룹화하여 조회할 때 사용
COUNT(), MAX(), MIN(), AVG(), SUM() 함수와 함께 주로 사용된다.

HAVING : GROUP BY와 함께 사용하는 조건절, 그룹에 대한 조건을 지정

예) 상품 테이블에서 MAKER 컬럼을 기준으로 그룹화하여 MAKER 별 상품수 또는 MAKER 별 상품 평균가를 조회할 때 사용함 또는 지역별 고객 수를 집계

다양한 예제로 GROUP BY, HAVING을 접해보자


예제

1. 이전에 만들어 놓은 예제로 item 테이블을 조회한다.

SELECT * FROM ITEM;



2. MAKER 별 상품수를 상품수 내림차순으로 조회

SELECT COUNT(*) AS MAKER_COUNT, MAKER 
FROM ITEM 
GROUP BY MAKER 
ORDER BY MAKER_COUNT DESC;


COUNT한것을 MAKER_COUNT로 이름지어 MAKER 두 컬럼이 조회되도록하였다.
~별로 조회할때에는 GROUP BY를 사용한다.
오뚜기는 2개, 하이트진로는 2개, 삼양은 1개의 열을 갖고있는 결과를 조회할 수 있다.



3. MAKER 별 상품수를 상품수 내림차순으로 조회하되 상품수가 1을 초과하는 MAKER들만 조회

SELECT MAKER , COUNT(*) AS ITEM_COUNT 
FROM ITEM 
GROUP BY MAKER 
HAVING COUNT(*)>1 --그룹함수를 써줘야, HAVING이 된 후에 별칭이 되기에 ITEM_COUNT 쓸 수 없음
ORDER BY ITEM_COUNT DESC



4. MAKER 별 상품의 평균가를 조회하되 평균가 내림차순으로 정렬

SELECT MAKER , AVG(PRICE) AS AVG_PRICE 
FROM ITEM 
GROUP BY MAKER 
ORDER BY AVG_PRICE DESC;



5. MAKER 별 상품의 평균가가 1300이상인 상품들을 조회하되 평균가 내림차순으로 정렬

SELECT MAKER , AVG(PRICE) AS AVG_PRICE 
FROM ITEM 
GROUP BY MAKER 
HAVING AVG(PRICE)>=1300 
ORDER BY AVG_PRICE DESC;

SELECT * FROM ITEM;
SELECT * FROM ITEM;
                              

0개의 댓글