DB - Oracle
SQL - 그룹 함수
H_eh
2022. 6. 15. 11:36
- 그룹함수
- 단일행 함수가 아니다
- 여러 행에 대한 연산 → 평균, 개수
- 특히 GROUP BY 와 같이 주로 활용
- COUNT() : 개수 반환
- COUNT(*) : 모든 행의 개수반환
- SUM() : 데이터 값의 합
- AVG() : 평균
- MAX()
- MIN()
- STDDEV() : 표준편자
- VARIANCE() : 분산값
SELECT MAX(ENR_GRADE) AS 최고점수, MIN(ENR_GRADE) AS 최저점수 FROM ENROL;
SELECT MAX(STU_WEIGHT), MIN(STU_WEIGHT) FROM STUDENT WHERE STU_DEPT = '기계';
-- 전체 학생 수 / 키 값 가진 학생 수
SELECT COUNT(*), COUNT(STU_HEIGHT) FROM STUDENT;
SELECT COUNT(DISTINCT STU_DEPT) FROM STUDENT;
SELECT COUNT(*) AS 학생수 FROM STUDENT;
SELECT COUNT(*) AS 학생수, SUM(STU_HEIGHT) AS 신장합,
COUNT(STU_HEIGHT) AS 해당학생수, AVG(STU_HEIGHT) AS 신장평균
FROM STUDENT;
- STDDEV : 표준편차
-- 부서별 사원들의 급여의 표준편차(STDDEV)
SELECT DEPTNO,
STDDEV(SAL) AS 표준편차
FROM EMP1
GROUP BY DEPTNO;
- GROUP BY 절
- 그룹 별 대표값 반환
- 결과 값을 원하는 열로 묶어 출력
SELECT STU_DEPT, AVG(STU_WEIGHT) AS 평균몸무게 FROM STUDENT GROUP BY STU_DEPT;
SELECT STU_DEPT, COUNT(*) FROM STUDENT WHERE STU_WEIGHT >+ 50 GROUP BY STU_DEPT;
-- 학과별 학생들의 인원수를 인원수가 많은 순으로 검색하라.
SELECT STU_DEPT AS 학과,
COUNT(*)
FROM STUDENT
GROUP BY STU_DEPT
ORDER BY COUNT(*) DESC;
- HAVING
- GROUP BY 절의 조건
-- 기계과 학생들 중 학년별 평균키가 160이상인 학년과 평균키 출력
SELECT STU_GRADE, AVG(STU_HEIGHT)
FROM STUDENT WHERE STU_DEPT='기계'
GROUP BY STU_GRADE HAVING AVG (STU_HEIGHT)>=160;
-- 최대 키가 175 이상인 학과, 학과별 키 구하기
SELECT STU_DEPT, MAX(STU_HEIGHT) FROM STUDENT
GROUP BY STU_DEPT HAVING MAX(STU_HEIGHT) >= 175;
-- 학과별 평균 키 중 가장 높은 평균 키
SELECT MAX(AVG(STU_HEIGHT)) FROM STUDENT GROUP BY STU_DEPT;
728x90
728x90