GROUP

이태규·2022년 3월 22일
0

SQL

목록 보기
15/26

그룹, 반별 학생 수.

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의 수가 차이나기 떄문에.

반별, 합계 (SUM)

SELECT 
	STDCLS 반, 
    SUM(SCOREKOR) 합계 
FROM 
	STUDENT1 GROUP BY(STDCLS);

반별, 평균( AVG ), 반올림 (ROUND(숫자, 자리수))

SELECT 
    STDCLS 반,
    ROUND( AVG(SCOREKOR), 1) 국어평균,
    ROUND( AVG(SCOREENG), 1) 영어평균,
    ROUND( AVG(SCOREMATH), 1) 수학평균
FROM 
    STUDENT1 
GROUP BY(STDCLS);

수학점수가 50 이상인 학생들의 반 별 평균점수 구하기

SELECT 
    STDCLS 반,
    ROUND( AVG(SCOREMATH), 1) 수학평균
FROM 
    STUDENT1 
WHERE
    SCOREMATH >= 50
GROUP BY(STDCLS);

2. 반별 평균 수학점수가 50점 이상인 것

SELECT 
    STDCLS,
    ROUND(AVG(SCOREMATH),1 ) 수학평균
FROM 
    STUDENT1 
GROUP BY(STDCLS) HAVING ROUND(AVG(SCOREMATH),1) >= 50;

3. 분별 합계

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';

그룹화를 하지 않으면 단일그룹함수가 아니기 때문에 하나의 목록으로 보여주는 게 불가능하다.

profile
한 걸음씩 나아가자

0개의 댓글