Oracle - 집계함수 AVG

갓김치·2020년 8월 20일
0

Oracle

목록 보기
18/33

참고

2020-08-18-02)집계함수.sql

AVG(expr)

  • expr은 컬럼명이나 수식
  • 그룹핑된 expr에 저장된 값에 대한 평균을 반환
  • ★결과값이 소수점이 나올 수있다는 것을 염두 (갯수, 인원수 제외)

예시

1. 사원테이블에서 각 부서별 평균 급여를 구하시오.

  • SELECT: 집계함수를 제외시킨 일반컬럼은 GROUP BY에 기술되어 그룹핑되기때문에 필요없는 일반컬럼을 쓰면 안됨
      1. 부서+사원+AVG(급여) -> 부서별 사원별 이렇게되서 1명씩됨
      1. 부서+급여+AVG(급여) -> 부서내에서 급여같은사람끼리 묶임

2. 매입테이블에서 2005년 3월 제품별 평균 매입수량을 조회하시오

  • WHERE절: '20050301'이라고 해도됨, TO_DATE 사용은 더 정확히 하기 위해서임.

문제

1-1. 회원테이블에서 50대 회원의 성별별 평균 마일리지를 구하시오 (생일 기준 나이)

1-2. 회원테이블에서 50대 회원의 성별별 평균 마일리지를 구하시오 (주민등록상 나이)

2. 장바구니테이블에서 2005년 5월 회원별 평균매출액을구하시오

  • 단, 평균매출액이 100만원 이상인 회원만 조회하시오
  • Alias는 회원번호, 평균매출액
  • 주의사항
    • JOIN 조건이 없으면 PROD 첫번째 행의 가격으로 곱하기가 됨
    • TO_DATE(SUBSTR()) BETWEEN '' AND '' 의 속도가 LIKE '%'보다 빠름
      • LIKE는 패턴을 비교하기 때문에 느림
    • HAVING 조건도 SELECT 컬럼내용처럼 반올림해줘야함
    • DB는 정확한 데이터가 생명. 원단위 절삭보다는 소수점만 절삭하는걸로!

사원테이블에서 부서별 사원들의 평균 근속년수를 구하고 근속년수가 가장 큰 부서 3개만 출력하시오

  • A안의 뷰
  • 결과
  • 주의사항
    • ROWNUM은 WHERE절 안에서 사용 가능
    • ROWNUM과 ORDER BY는 함께 쓰일 수 없다
    • ORDER BY 진행한 후, 뷰를 조인 테이블에 넣어 그 쿼리안에서 WHERE 절에 ROWNUM 넣어야함
profile
갈 길이 멀다

0개의 댓글