SQL 함수(FUCNTION)_복수행함수(그룹함수)(1)~GROUP BY

·2022년 11월 18일
0

Oracle/SQL

목록 보기
7/16

복수행 함수 : 여러 행의 데이터를 받아 하나의 결과값을 반환하는 함수(리턴값이 하나)

[주의] 그룹함수끼리만 쓸 수 있다. 왜냐면 다른 컬럼이 오면 행의 개수가 달라지니까


1. COUNT(컬럼명): 행의 개수

아래 둘은 똑같은 결과를 출력한다!
SELECT COUNT(*) FROM EMP;
SELECT COUNT(ENAME) FROM EMP;
출력예시> 12

2. SUM(컬럼명) : 해당 컬럼(열)의 총합

예시)
SELECT SUM(SAL) FROM EMP;
출력예시> 24925

위에서 말한 것처럼 단일행과 같이 올 수 없다.
예시)
SELECT ENAME, SUM(SAL) FROM EMP;
출력예시> SQL 오류: ORA-00937: 단일 그룹의 그룹 함수가 아닙니다.

3. MIN(컬럼명),MAX(컬럼명) : 최소,최대값

예시)
SELECT MIN(SAL) 최저연봉, MAX(SAL) 최고연봉 FROM EMP;
출력예시>
최저연봉 최고연봉
---------- ----------
800............. 5000



4. GROUP BY : 컬럼을 기준으로 그룹으로 묶음

(문제에서 나오는 ㅇㅇ별 을 그룹으로 묶어주면 되겠다.)
GROUP BY에 있는 컬럼은 SELECT절에도 들어가야함

예시) 부서별 사원들의 급여합
SELECT DEPTNO, SUM(SAL) "부서별 급여합" FROM EMP GROUP BY DEPTNO;
출력예시>
DEPTNO 부서별 급여합
---------- ----------

30       9400
10       8750
20       6775

4-1. HAVING : GROUP BY로 묶어준 컬럼에 조건을 걸어줌

예시) 사원들의 부서별 평균급여 구하기.(단, 평균급여가 2000이상인 부서만 출력
SELECT DEPTNO FLOOR(AVG(SAL)) 평균급여 FROM EMP GROUP BY DEPTNO HAVING FLOOR(AVG(SAL))>=2000
출력예시>

    DEPTNO    평균급여
---------- ----------
        10     2916.7
        20     2258.3

5. ORDER BY : 정렬

오름차순: ASC (디폴트가 오름차순이므로 아무것도 안써주면 오름차순으로 정렬함)
내림차순: DESC

profile
웹개발입문자

0개의 댓글