1. GROUP BY 문법
SELECT 소속반, COUNT(*) AS 반별인원수
FROM 수강생정보
GROUP BY 소속반 ;
SELECT 소속반, 학생이름
FROM 수강생정보
GROUP BY 소속반 ;
--이건 오류코드(소속반 안으로 학생이름이 들어갈 칸 수가 부족)
SELECT 소속반, COUNT(학생이름)
FROM 수강생정보
GROUP BY 소속반 ;
2. GROUP BY 사용이유
SELECT 소속반, COUNT(*)
FROM 수강생정보
GROUP BY 소속반;
SELECT 학생ID, AVG(성적)
FROM 성적표
GROUP BY 학생ID;
SELECT 학생ID, SUM(성적)
FROM 성적표
GROUP BY 학생ID ;
SELECT 학생ID, MAX(성적), MIN(성적)
FROM 성적표
GROUP BY 학생ID ;
3. 집계함수의 종류
SELECT 학생ID, COUNT(*)
FROM 성적표
GROUP BY 학생ID ;
SELECT 학생ID, COUNT(성적)
FROM 성적표
GROUP BY 학생ID ;
SELECT COUNT(*)
FROM 성적표 ;
--테이블에 행이 몇 개 있는지 알 수 있다.
SELECT COUNT(*)
FROM 성적표
GROUP BY ();
--()는 전체를 의미
--우리가 따로 GROUP BY 안쓰면 자동으로 GROUP BY()로 인식됨.
SELECT 직원ID, 부서ID, MAX(연봉)
FROM 부서
GROUP BY 부서ID ;
--GROUP BY에 입력된 것들만 SELECT에 입력 가능함.
--따라서 SELECT에 있는 직원ID 때문에 오류발생
SELECT 학생ID
, MAX(성적)
FROM 성적표
GROUP BY 학생ID ;
SELECT 학생ID, MIN(성적)
FROM 성적표
GROUP BY 학생ID;
SELECT 학생ID, AVG(성적), ROUND(AVG(성적),1)
FROM 성적표
GROUP BY 학생ID;
예제)
--문제1)성적표 테이블에서 학생별로 평균점수를 출력해주세요.
--이때 소수점 1자리 까지만 출력되도록 ROUND 함수도 활용해보세요.
--[ 힌트 : ROUND ( 평균을뽑은값 , 1 ) ]
SELECT * FROM 성적표;
SELECT 학생ID , ROUND( AVG(성적), 1) AS 평균성적
FROM 성적표
GROUP BY 학생ID;
--문제2)직원 테이블에서 모든 직원 중에 최고연봉과 최저연봉을 출력해주세요.
SELECT MAX(연봉) AS 최고연봉, MIN(연봉) AS 최저연봉
FROM 직원;
--문제3) 수강생정보 테이블에서 각 소속된 반별로 몇 명이 있는지 출력해주세요.
SELECT * FROM 수강생정보 ;
SELECT 소속반, COUNT(학생이름) AS 반별인원수
FROM 수강생정보
GROUP BY 소속반;
--문제4) 성적표 테이블에서 학생별로 국어와 영어 성적의 평균을 출력해주세요.
--(힌트 : 과목이 수학인 데이터는 제외하기)
SELECT * FROM 성적표;
SELECT 학생ID, AVG(성적) AS 수학제외한평균
FROM 성적표
WHERE 과목 != '수학'
GROUP BY 학생ID;
--문제5) 직원 테이블에서 부서별로 연봉의 합계를 출력해주세요.
SELECT * FROM 직원 ;
SELECT * FROM 부서 ;
SELECT 부서ID, SUM(연봉) AS 부서별연봉합계
FROM 직원
GROUP BY 부서ID;
--문제6) 직원 테이블과 직원 연락처 테이블을 이용해서 직원별로 연락처정보가 몇개 있는지 출력해주세요.
--직원 테이블을 기준으로 A0001 ~ A0011 의 모든 직원을 보여주되 , 연락처가 없는 대상도 0건으로
--출력되도록 해주세요. (단 , 조인시 오라클방식의 조인을 이용해보세요 )
SELECT * FROM 직원;
SELECT * FROM 직원연락처;
SELECT A.직원ID
, COUNT(B.연락처) AS 연락처개수
FROM 직원 A LEFT OUTER JOIN 직원연락처 B
ON (A.직원ID = B.직원ID)
GROUP BY A.직원ID;
'Computer Engineering > DB_Oracle' 카테고리의 다른 글
ORDER BY (0) | 2023.03.03 |
---|---|
HAVING (0) | 2023.03.03 |
복습용문제_230303 (0) | 2023.03.03 |
ANSI문법 (0) | 2023.03.02 |
FROM_조인(join) (0) | 2023.03.02 |
댓글