SQL 함수 (FUNCTION)
자바의 메소드와 비슷한 역할
전달된 값들을 읽은 후, 메서드에 맞는 계산결과를 반환
1) 단일행함수: n개의 값을 읽어서 n개의 값 리턴
2) 그룹함수: n개의 값을 읽어서 1개의 값 리턴
==> 단일행 함수와 그룹함수는 반환결과의 행수가 다르므로
일반적으로 하나의 쿼리문에 함께 사용할 수 없음!
그룹 함수
1. SUM
SUM(숫자타입컬럼) : 해당 컬럼값들의 총 합계를 반환
-- 총 사원들의 급여 합계
SELECT SUM(SALARY)
FROM EMPLOYEE;
-- 부서코드 D5인 사람들의 총 급여 합
SELECT SUM(SALARY)
FROM EMPLOYEE
WHERE DEPT_CODE = 'D5';
--남자사원들의 총 급여
SELECT SUM(SALARY)
FROM EMPLOYEE
WHERE SUBSTR(EMP_NO, 8, 1) =1;
2. AVG
- AVG (숫자타입컬럼) : 해당 컬럼값들의 평균값을 구해서 반환
SELECT ROUND (AVG(SALARY)) , '원' AS "월급평균"
FROM EMPLOYEE;
3. MIN/MAX
MIN: 해당 컬럼값들중최소값을 반환
전체 사원중에서 최저급여
MAX : 최댓값 반환
SELECT MIN(SALARY), MIN(HIRE_DATE), MIN(EMP_NAME)
FROM EMPLOYEE;
SELECT MAX(SALARY), MIN(HIRE_DATE), MIN(EMP_NAME)
FROM EMPLOYEE;
4. COUNT: 조회된 행 갯수를 세서 반환
-COUNT(*) : 조회된 모든 행 갯수 반환
-COUNT(컬럼명) : NULL이 아닌 것만 카운트, 조회된 모든 행 갯수 반환
-COUNT(DISTINCT 컬럼명) : 중복 값이 있을 경우 하나로만 카운트, 조회된 모든 행 갯수 반환
-- 전체 사원 수
*/
SELECT COUNT(*) AS "전체사원수"
FROM EMPLOYEE;
-- 여자사원수만 조회
SELECT COUNT (*)
FROM EMPLOYEE
WHERE (SUBSTR(EMP_NO, 8, 1) = 2) ;
-- 부서배치가 완료된 사원수
SELECT COUNT(*)
FROM EMPLOYEE
WHERE DEPT_CODE IS NOT NULL; -- 왜 != 를 IS NOT 대신 쓰면 안되징?
-- NULL은 숫자도 문자도 아니므로 NULL과 비교하려면
-- IS NULL, IS NOT NULL을 써야함
-- 또한 NULL과 더하거나 곱하거나 등등 모든 연산의 결과는 NULL 처리됨
--현재 사원들이 속해있는 부서의 갯수
SELECT COUNT(DISTINCT DEPT_CODE)
FROM EMPLOYEE;
'Database' 카테고리의 다른 글
[SQL] 집합연산자 (SET OPERATOR) (0) | 2022.10.04 |
---|---|
[SQL] 조인 (JOIN) (1) | 2022.10.04 |
[SQL] 함수 - 단일행함수 (문자열함수/ 숫자관련/형변환함수/ 선택함수) (1) | 2022.10.04 |
[SQL] DML - SELECT문 (0) | 2022.10.04 |
[SQL] 명령어의 구분 (DML / DDL/ DCL/TCL) (0) | 2022.10.04 |