SELECT [GROUP BY 절에 지정된 컬럼1] [GROUP BY별로 집계할 값]
FROM [테이블 명]
GROUP BY [ 그룹으로 묶을 컬럼 값 ]
SELECT STDCLS, COUNT(*) FROM STUDENT1 GROUP BY(STDCLS);
그룹으로 하면 그룹 컬럼의 개수만큼 만들어짐.
SELECT STDCLS, NAME FROM STUDENT1 GROUP BY(STDCLS);
이렇게 하면 오류가 남.
STDCLS와 NAME의 수가 차이나기 떄문에.
SELECT
STDCLS 반,
SUM(SCOREKOR) 합계
FROM
STUDENT1 GROUP BY(STDCLS);
SELECT
STDCLS 반,
ROUND( AVG(SCOREKOR), 1) 국어평균,
ROUND( AVG(SCOREENG), 1) 영어평균,
ROUND( AVG(SCOREMATH), 1) 수학평균
FROM
STUDENT1
GROUP BY(STDCLS);
SELECT
STDCLS 반,
ROUND( AVG(SCOREMATH), 1) 수학평균
FROM
STUDENT1
WHERE
SCOREMATH >= 50
GROUP BY(STDCLS);
SELECT
STDCLS,
ROUND(AVG(SCOREMATH),1 ) 수학평균
FROM
STUDENT1
GROUP BY(STDCLS) HAVING ROUND(AVG(SCOREMATH),1) >= 50;
SELECT
TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI')시간,
COUNT(*) 개수
FROM STUDENT1 GROUP BY(TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI'));
목표: 판매자가 a인 물품의 물품수량, 물품가격평균 조회
SELECT ITEMSELLER, SUM(ITEMQTY), COUNT(*)
FROM ITEM2
WHERE ITEMSELLER ='D'
GROUP BY(ITEMSELLER);
그룹화 하면 ITEMSELLER컬럼을 뽑아낼 수 있음.
SELECT ITEMSELLER, AVG(ITEMPRICE), COUNT(*) FROM ITEM2 WHERE ITEMSELLER = 'D';
그룹화를 하지 않으면 단일그룹함수가 아니기 때문에 하나의 목록으로 보여주는 게 불가능하다.