SQL활용 #7 - 그룹
1. 그룹
GROUP BY
SELECT 조건컬럼 FROM STUDENT1 GROUP BY(조건컬럼);
: 앞뒤의 컬럼명은 일치해야함- 대부분은 내장함수를 사용한다.
1. COUNT(*)
- 개수
SELECT 조건컬럼, COUNT(*) FROM STUDENT1 GROUP BY(조건컬럼);
- 그룹, 반별 학생수(
COUNT(*)
)
:SELECT STDCLS 반, COUNT(*) FROM STUDENT1 GROUP BY(STDCLS);
2. SUM(컬럼)
- 합계
SELECT 조건컬럼, SUM(합계낼컬럼) 국어합계 FROM STUDENT1 GROUP BY (조건컬럼);
- 반별, 합계(SUM)
:SELECT STDCLS 반, SUM(SCOREKOR) 국어합계 FROM STUDENT1 GROUP BY (STDCLS);
3. AVG(컬럼)
- 평균
SELECT 조건컬럼, AVG(평균낼컬럼) FROM STUDENT1 GROUP BY(조건컬럼);
- 반별, 평균(AVG)
:SELECT STDCLS 반, AVG(SCOREKOR) 국어평균, SUM(SCOREKOR) 국어합계 FROM STUDENT1 GROUP BY (STDCLS);
4. ROUND(숫자, 자릿수)
- 반올림
SELECT 조건컬럼, ROUND(숫자, 자릿수) FROM STUDENT1 GROUP BY(조건컬럼);
- 반별, 평균(AVG), 반올림 (ROUND(숫자, 자리수)
:SELECT STDCLS 반, ROUND(AVG(SCOREKOR),1) 국어평균, SUM(SCOREKOR) 국어합계 FROM STUDENT1 GROUP BY (STDCLS);
5. TO_CHAR(컬럼, '바꿀형식')
- 문자열로 바꿈
TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI')
- 시간별은
TO_CHAR(REGDATE, 'YYYY-MM-DD HH24)
- 분별, 합계
:SELECT TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI') 시간, COUNT(*) 개수 FROM STUDENT1 GROUP BY (TO_CHAR(REGDATE, 'YYYY-MM-DD HH24:MI'));
전체코드
-- 그룹
-- 학생테이블에 컬럼 추가
-- STDCLS : VARCHR2(1) 반코드 ('A', 'B', 'C')
-- SCOREKOR : NUMBER(3)
-- SCOREENG : NUMBER(3)
-- SCOREMATH : NUMBER(3)
-- REGDATE : DATE
ALTER TABLE STUDENT1 ADD STDCLS VARCHAR2(1) DEFAULT 'A';
ALTER TABLE STUDENT1 ADD SCOREKOR NUMBER(3) DEFAULT 80;
ALTER TABLE STUDENT1 ADD SCOREENG NUMBER(3) DEFAULT 80;
ALTER TABLE STUDENT1 ADD SCOREMATH NUMBER(3) DEFAULT 80;
ALTER TABLE STUDENT1 ADD REGDATE DATE DEFAULT CURRENT_DATE;
INSERT INTO STUDENT1(STDNO, STDNAME, STDTEL, STDCLS, SCOREKOR, SCOREENG, SCOREMATH, REGDATE)
VALUES(SEQ_STD_CODE.NEXTVAL, '나다라', '0-0-0', 'B', 50, 45, 70, CURRENT_DATE);
SELECT * FROM STUDENT1;
-- 그룹, 반별 학생수(COUNT(*))
SELECT STDCLS 반, COUNT(*) FROM STUDENT1 GROUP BY(STDCLS);
-- 반별, 합계(SUM)
SELECT STDCLS 반, SUM(SCOREKOR) 국어합계 FROM STUDENT1 GROUP BY (STDCLS);
-- 반별, 평균(AVG), 반올림 (ROUND(숫자, 자리수)
SELECT STDCLS 반, ROUND(AVG(SCOREKOR),1) 국어평균, 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);
-- 1. 수학점수가 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'));
Author And Source
이 문제에 관하여(SQL활용 #7 - 그룹), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@aro9515/SQL활용-7-그룹저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)