[DB_SQL활용] 다중행 함수와 데이터 그룹화

예지성준·2024년 5월 9일

DB

목록 보기
7/19
post-thumbnail

다중행 함수와 데이터 그룹화

🧐단일행함수
모든 행을 각각 하나씩 바꿀 수 있다.

🧐다중행함수
모든 행에 걸쳐서 결과값으로 하나를 출력해낸다.

  • 레코드 개수가 동일해야한다.

하나의 열에 출력 결과를 담는 다중행 함수

  • 여러 행을 바탕으로 하나의 결과 값을 도출해 내기 위해 사용하는 함수입니다.

  • SUM 함수를 사용하여 급여 합계 출력하기

  • SUM 함수를 사용하여 사원 이름과 급여 합계 출력하기(오류 발생)

  • 자주 사용하는 다중행 함수

    • 대부분 통계 관련 함수

1. 합계를 구하는 SUM 함수

1) 데이터의 합을 구하는 함수

2) 추가 수당 합계 구하기

3) SUM 함수와 DISTINCT, ALL 함께 사용하기
ALL: 모든 값 (기본값) - 중복이 있어도 합쳐짐
DISTINCT: 유일한 값 - 중복제거

2. 데이터 개수를 구해 주는 COUNT 함수

1) 데이터 개수를 출력하는 데 사용

SELECT COUNT(JOB), COUNT(DISTINCT JOB) FROM EMP;
-- COUNT(ALL JOB): 14 / COUNT(DISTINCT JOB): 5

2) NULL이 데이터로 포함되어 있을 경우, NULL 데이터는 반환 갯수에서 제외

참고) 전체 데이터 개수: COUNT(*)

🔼 페이지 번호 구할때도 전체 레코드 개수가 필요하다. 이런경우 사용함

3. 최댓값과 최솟값을 구하는 MAX, MIN 함수

MAX(): 최대값
MIN(): 최소값

1) 부서 번호가 10번인 사원들의 최대 급여 출력하기

2) 부서 번호가 10번인 사원들의 최소 급여 출력하기

3) 부서 번호가 20인 사원의 입사일 중 제일 최근 입사일 출력하기

  • MAX

4) 부서 번호가 20인 사원의 일사일 중 제일 오래된 입사일 출력하기

  • MIN

4. 평균 값을 구하는 AVG 함수

AVG(): 평균

1) 부서 번호가 30인 사원들의 평균 급여 출력하기

2) DISTINCT로 중복을 제거한 급여 열의 평균 급여 구하기

결과 값을 원하는 열로 묶어 출력하는 GROUP BY절⭐

  • 집합 연산자를 사용하여 각 부서별 평균 급여 출력하기

1. GROUP BY 절의 기본 사용법

1) 여러 데이터에서 의미 있는 하나의 결과를 특정 열 값으로 묶어서 출력할 때 데이터를 '그룹화' 한다고 표현

🔼 3개의 레코드가 출력되는데 이렇게만 출력하면 어떤 부서인지 알 수 없음

🔼통계 개수와 레코드의 개수가 동일하기 때문에 SELECT문에 작성 가능

2) 문법

3) GROUP BY절에 명시하는 열은 여러 개 지정할 수 있습니다.

4) GROUP BY를 사용하여 부서별 평균 급여 출력하기

5) 부서 번호 및 직책별 평균 급여로 정렬하기

🔼 공통적인 값(DEPTNO+JOB) 그룹화해서 평균 출력


📚📌위에서 SUM은 다중행함수로써 하나의 행에 출력 결과를 담아야 해서 ENAME과 같이 출력할 수 없었지만 그룹화를 해서 레코드 개수가 같아지면 그룹화한 해당 컬럼들을 같이 출력할 수 있다.

2. GROUP BY절을 사용할 때 유의점

1) 다중행 함수를 사용하지 않은 일반 열은 GROUP BY절에 명시하지 않으면 SELECT 절에서 사용할 수 없다는 것

2) GROUP BY절에 없는 열을 SELECT절에 포함했을 경우
-> 오류

GROUP BY절에 조건을 줄 때 사용하는 HAVING절

1) HAVING 절은 SELECT문에 GROUP BY절이 존재할 때만 사용할 수 있습니다.

2) GROUP BY절을 통해 그룹화된 결과 값의 범위를 제한하는 데 사용

3) GROUP BY 절과 HAVING절을 사용하여 출력하기

1. HAVING절의 기본 사용법

  • HAVING 집계함수를 사용한 조건

2. HAVING절을 사용할 때 유의점

1) WHERE절은 출력 대상 행을 제한하고(집계함수 x), HAVING절은 그룹화된 대상을 출력에서 제한

  • HAVING 절은 집계 함수만 사용 가능

2) HAVING절 대신 WHERE절을 잘못 사용했을 경우
-> 오류


부서별 통계 내기 !


그룹화와 관련된 여러 함수

잘 쓰진 않음ㅎㅎ

  1. ROLLUP 함수를 적용한 그룹화
    요약정보, 총 결과 출력
  1. CUBE 함수를 적용한 그룹화
    가능한 조합별로 통계 추가 출력
    부서별, 직책별 통계 추가
profile
꽁꽁 얼어붙은 한강 위로 😺

0개의 댓글