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 (조건컬럼);
:
SELECT STDCLS 반, SUM(SCOREKOR) 국어합계 FROM STUDENT1 GROUP BY (STDCLS);
3.AVG(列)
SELECT 조건컬럼, AVG(평균낼컬럼) FROM STUDENT1 GROUP BY(조건컬럼);
:
SELECT STDCLS 반, AVG(SCOREKOR) 국어평균, SUM(SCOREKOR) 국어합계 FROM STUDENT1 GROUP BY (STDCLS);
4.ROUND(数字、桁数)
SELECT 조건컬럼, ROUND(숫자, 자릿수) FROM STUDENT1 GROUP BY(조건컬럼);
:
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'));
Reference
この問題について(SQL#7-グループの利用), 我々は、より多くの情報をここで見つけました
https://velog.io/@aro9515/SQL활용-7-그룹
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
-- 그룹
-- 학생테이블에 컬럼 추가
-- 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'));
Reference
この問題について(SQL#7-グループの利用), 我々は、より多くの情報をここで見つけました https://velog.io/@aro9515/SQL활용-7-그룹テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol