티스토리 뷰
목차
그룹함수의 종류
N개의 값을 읽어듥여 1개의 결과를 반환하는 함수이다. 하나 이상의 행을 그룹으로 묶어 연산하여 하나의 결과로 나타낸다. 그룹 함수는 null을 제외하고 계산한다.
SUM ( NUMBER )
전달된 컬럼값들의 총 합계를 구해 NUMBER 타입으로 반환, 컬럼 값들의 총 합계를 구한다.
-- 전체 사원의 급여 합계를 구한다.
SELECT SUM(SAL)
FROM EMP;
-- 전 사원의 총 급여
SELECT SUM(SALARY)
FROM EMPLOYEE;
-- 남자 사원들의 총 급여합
SELECT SUM(SALARY)
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) IN ('1', '3');
-- 부서코드가 D5인 사원들의 총 연봉 합
SELECT SUM(SALARY*12)
FROM EMPLOYEE
WHERE DEPT_CODE = 'D5';
AVG ( NUMBER )
전달된 컬럼값들의 평균을 구해 NUMBER 타입으로 반환, 컬럼 값들의 평균 값을 구한다.
-- 전체 사원의 평균급여
SELECT SUM(SALARY) / 23
, AVG(SALARY)
, TO_CHAR( ROUND ( AVG(SALARY) ), 'L999,999,999' )
FROM EMPLOYEE;
2. SELECT SUM (SALARY) / 23 >> 총 23개의 SALARY가 더해진다.
, AVG (SALARY) >> SALARY의 평균 값을 반환하며 값이 소숫점이 많아 지저분하게 보일 수 있다.
, TO_CHAR ( ROUND ( AVG(SALARY) ) , 'L999,999,999' ) >> ROUND 함수(숫자만)를 통해 반올림처리해서 3047663로 반환 할 수 있다. 추가로 원화 표시를 하고 싶은 경우 TO_CHAR 함수로 묶은 후 ' L999,999,999 ' 와 같이 포맷을 작성해서 3,047,663으로 반환할 수 있다.
1. FROM EMPLOYEE; >> EMPLOYEE 테이블의 ~
MIN ( ANY )
(ANY) 어떠한 값이든 가능하다. 문자면 문자, 데이터면 테이터, 이 후 전달된 컬럼값들 중 최소값을 구해 해당 타입으로 반환한다.
SELECT MIN(EMP_NAME)
, MIN(SALARY)
, MIN(HIRE_DATE)
FROM EMPLOYEE;
2. SELECT MIN (EMP_NAME) >> EMP_NAME(이름) 중 최솟값(가장 작은 값)을 반환한다.
, MIN (SALARY) >> SALARY(급여) 문자열 타입 최솟값(가장 작은 값) 을 반환한다.
, MIN (HIRE_DATE) >> HIRE_DATE(입사일) 중 최솟값(가장 작은 값) 을 반환한다.
1. FROM EMPLOYEE; >> EMPLOYEE 테이블의 ~
MAX ( ANY )
(ANY) 어떠한 값이든 가능하다. 문자면 문자, 데이터면 테이터, 이 후 전달된 컬럼값들 중 최대값을 구해 해당 타입으로 반환
SELECT MAX(EMP_NAME)
, MAX(SALARY)
, MAX(HIRE_DATE)
FROM EMPLOYEE;
2. SELECT MAX (EMP_NAME) >> EMP_NAME(이름) 중 최댓값(가장 큰 값)을 반환한다.
, MAX (SALARY) >> SALARY(급여) 문자열 타입 최댓값(가장 큰 값) 을 반환한다.
, MAX (HIRE_DATE) >> HIRE_DATE(입사일) 중 최댓값(가장 큰 값) 을 반환한다.
1. FROM EMPLOYEE; >> EMPLOYEE 테이블의 ~
COUNT ( * | [ DISTINCT ] ANY )
전달된 행의 갯수 | 컬럼 값의 갯수를 세서 NUMBER 타입으로 반환, 행의 개수를 반환한다. 조회된 결과의 모든 행 갯수를 세서 반환한다.
- COUNT ( * )
- COUNT ( 컬럼명 )
- COUNT ( DISTINCT 컬럼명 )
COUNT ( * )
-- EMPLOYEE 테이블의 전체 사원을 조회
SELECT COUNT(*)
FROM EMPLOYEE;
-- EMPLOYEE 테이블의 여자 사원수를 조회
SELECT COUNT(*)
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) IN('2', '4'); -- 8명
1. FROM EMPLOYEE
: 조회하고자 하는 테이블 명은 EMPLOYEE이다.
2. WHERE SUBSTR(EMP_NO, 8, 1)
: 조건식이며, SUBSTR을 사용한다. SUBSTR을 통해 EMPLOYEE 테이블에 있는 EMP_NO 컬럼의 8번째 글자부터 1개를 잘라온다. (8번째는 주민등록번호 8번째 자리이기 때문에 잘라오는 것)
3. IN('2', '4');
WHERE절에서 'IN' 키워드는 OR조건과 같은 의미로 코드를 간략하게 줄여주는 키워드로 예시를 들면 아래와 같다.
번호 | 이름 | 주민등록번호 |
1 | 홍길동 | 1234567-2234567 |
2 | 홍길순 | 1234567-1234567 |
3 | 고길동 | 1234567-4234567 |
위와 같은 표에서 WHERE SUBSTR(EMP_NO, 8,1) IN('2','4') 를 실행할 경우 8번째 글자 첫번째에 '2'인 글자와 '4'인 글자를 충족하는 1번과 3번에 있는 데이터를 추출한다.
COUNT ( 컬럼명 )
조회된 컬럼의 값들을 갯수를 세서 반환 (단, NULL은 제외)
-- 여자 사원들 중에서 보너스를 받는 사원의 수
SELECT COUNT(*)
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) IN('2', '4')
AND BONUS IS NOT NULL; -- 4명
3. SELECT COUNT ( * ) >> 조회 컬럼의 값들의 갯수를 세서 반환한다.
1. FROM EMPLOYEE >> EMPLOYEE 테이블의
2. WHERE SUBSTR(EMP_NO , 8 , 1 ) >> EMP_NO 컬럼의 8번째부터 첫번째 글자가
IN ( ' 2 ' , ' 4 ' ) >> ' 2 ' 또는 ' 4 ' 인 경우와
AND BOUNS IS NOT NULL; >> 그리고(AND) 보너스 컬럼 데이터가 NULL이 아닌(IS NOT NULL)을 반환한다.
또는 아래와 같은 방법으로도 구현이 가능하다.
SELECT COUNT(BONUS)
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) IN('2', '4'); -- 4명
3. SELECT COUNT ( BONUS ) >> BONUS 컬럼의 조회된 값들의 갯수를 세서 반환한다.
1. FROM EMPLOYEE >> EMPLOYEE 테이블의
2. WHERE SUBSTR(EMP_NO , 8 , 1 ) >> EMP_NO 컬럼의 8번째부터 첫번째 글자가
IN ( ' 2 ' , ' 4 ' ) >> ' 2 ' 또는 ' 4 ' 인 경우
-- 부서배치를 받은 사원수 조회
SELECT COUNT(DEPT_CODE)
FROM EMPLOYEE;
2. SELECT COUNT(DEPT_CODE) >> DEPT_CODE 컬럼의 조회된 값들의 갯수를 세서 반환한다.
1. FROM EMPLOYEE >> EMPLOYEE 테이블의 ~
COUNT ( DISTINCT 컬럼명 )
DISTINCT
DISTINCT란 테이블에서 중복된 데이터를 제거하고 고유한 값을 반환하는 SQL 명령어이다. DISTINCT를 사용하면 쿼리문을 분석할 때 중복을 제거한 결과가 반환된다는 것을 직관적으로 파악할 수 있다. 하지만 DISTINCT 를 사용하면 temp tablespace에 임시로 저장 후 작업하는 방식이라서 시스템에 부하가 발생할 수도 있다.
-- 현재 사원들이 총 몇개의 부서에 분포되어있는지
SELECT COUNT(DISTINCT DEPT_CODE) -- 6
FROM EMPLOYEE;
2. SELECT COUNT ( DISTINCT DEPT_CODE ) >> DEPT_CODE 컬럼의 중복된 값을 제거한 후 조회된 값들을 갯수를 세서 반환한다.
1. FROM EMPLOYEE >> EMPLOYEE 테이블의 ~
※ NULL인건 세어지지 않음
SELECT COUNT(DISTINCT NVL(DEPT_CODE, '없음')) -- 7
FROM EMPLOYEE;
2. SELECT COUNT ( DISTINCT DEPT_CODE ) >> DEPT_CODE 컬럼의 중복된 값을 제거한 후 조회된 값들을 없음도 포함해서 갯수를 세서 반환한다.
1. FROM EMPLOYEE >> EMPLOYEE 테이블의 ~
'Oracle SQL > SELECT' 카테고리의 다른 글
오라클(Oracle) | SQL 05 | SELECT(형변환함수) (0) | 2024.07.26 |
---|---|
오라클(Oracle) | SQL 04 | SELECT(날짜처리함수) (0) | 2024.07.26 |
오라클(Oracle) | SQL 03 | SELECT(숫자처리함수) (0) | 2024.07.26 |
오라클(Oracle) | SQL 02 | SELECT(문자처리함수) (0) | 2024.07.26 |
오라클(Oracle) | SQL 01 | SELECT(기본문법) (0) | 2024.07.21 |
- Total
- Today
- Yesterday
- 코딩활용능력 자격증
- 정보처리기능가 필기 시험문제
- 파이썬 elif문
- 개발자 자격증 준비
- 정보처리기능사 자격증 문제
- 정보처리기능사 자격증 준비
- oracle 시스템 명령어
- 코딩활용능력 자격증 조건문
- 코딩활용능력자격증 문제풀이
- Oracle
- 코딩활용능력 시험일정
- 파이썬 else 문
- 정보처리기능사 필기 준비
- oracle 권한주는 명령어
- 정보처리기능사 필기 문제
- oracle 자원 사용 권한 주는 명령어
- 정보처리산업기사 자격증
- 코딩활용능력 자격증 파이썬
- 코딩활용능력 자격증 기출문제
- 코딩활용능력 자격증 시험문제
- 코딩활용능력자격증
- 정보처리기능사 시험 문제
- oracle 권한 부여 명령어
- 정보처리 기능사 필기 준비
- 코딩활용능력 기출문제
- oracle 사용자 계정 만들기
- oracla 사용자 계정 만드는 방법
- 정보처리기능사 준비
- 코딩활용능력자격증 문제
- ocalce 사용자 계정 삭제하는 방법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |