DB - Oracle

SQL - 그룹 함수

H_eh 2022. 6. 15. 11:36
  • 그룹함수
    • 단일행 함수가 아니다
    • 여러 행에 대한 연산 → 평균, 개수
    • 특히 GROUP BY 와 같이 주로 활용

 

  1. COUNT()  :  개수 반환
  2. COUNT(*)  :  모든 행의 개수반환
  3. SUM()  :  데이터 값의 합
  4. AVG()  :  평균
  5. MAX()
  6. MIN()
  7. STDDEV()  :  표준편자
  8. 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