GROUP BY : 특정 컬럼을 기준으로 데이터를 그룹화하여 조회할 때 사용
COUNT(), MAX(), MIN(), AVG(), SUM() 함수와 함께 주로 사용된다.
HAVING : GROUP BY와 함께 사용하는 조건절, 그룹에 대한 조건을 지정
예) 상품 테이블에서 MAKER 컬럼을 기준으로 그룹화하여 MAKER 별 상품수 또는 MAKER 별 상품 평균가를 조회할 때 사용함 또는 지역별 고객 수를 집계
다양한 예제로 GROUP BY, HAVING을 접해보자
SELECT * FROM ITEM;
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개의 열을 갖고있는 결과를 조회할 수 있다.
SELECT MAKER , COUNT(*) AS ITEM_COUNT
FROM ITEM
GROUP BY MAKER
HAVING COUNT(*)>1 --그룹함수를 써줘야, HAVING이 된 후에 별칭이 되기에 ITEM_COUNT 쓸 수 없음
ORDER BY ITEM_COUNT DESC
SELECT MAKER , AVG(PRICE) AS AVG_PRICE
FROM ITEM
GROUP BY MAKER
ORDER BY AVG_PRICE DESC;
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;