-
2.1 SQL 그룹함수SQL 과정 2019. 2. 1. 15:42
1.그룹 함수
가. 하나 이상의 행을 그룹으로 묶어서 연산하여 하나의 결과를 반환하는 함수
나. 그룹함수는 해당 컬럼값이 NULL이면 이를 제외하고 계산한다.
* 단일 함수 ROUND SAL 100의 자리를 반올림
* 그룹함수 SUM(SAL 컬럼의 값을 모두 합한 값을 출력한다.)
* 그룹함수 AVG(SAL 컬럼의 값들을 평균으로 연산하여 출력한다.)
* 그룹함수 MAX(SAL 컬럼 값들 중 가장 높은 값을 출력한다.)
* 그룹 함수MIN(가장 낮은거 출력)
* 컬럼의 로우의 개수를 세는 함수 COUNT 사용(NULL은 세지 않는다.)
* 모든 컬럼과 COMM컬럼에서 NULL을 제외한 로우의 수를 출력
* 문자열로 된 컬럼의 값들의 개수도 센다.(중복되는 값들도 따로따로 센다.)
* 중복되지 않게(DISTINCT) 하여 컬럼의 수를 센다.
2. GROUP BY 절
가. 특정 컬럼을 기준으로 테이블에 존재하는 행들을 그룹별로 구분하기 위해 사용
나. 형식
1) 그룹 함수를 사용할 경우 어떤 컬럼값을 기준으로 그룹함수를 적용할지 지정해야 한다.
2) 이 절 뒤의 컬럼명에는 컬럼의 별칭은 사용할수 없고 반드시 컬럼 명이 와야한다.
* GROUP BY절을 사용(30그룹, 20그룹, 10그룹으로 나누어진다.)
* 그룹(30, 20, 10) 별 SAL 평균
* ENAME은 GROUP BY절에 묶여지지 않았기 때문에 사용 불가하다.
* GROUP BY절에는 그룹함수(SUM, AVG 등)를 사용할수 있다.(그룹화 된 컬럼에 단일 함수를 사용하는 것도 가능하다.)
* ORDER BY절 사용으로 내림차순(DESC)을 이용하여 2개의 인자를 추가할수 있다.
* DEPTNO을 그룹화 시키고 각 그룹의 SAL 최대값과 최소값을 출력한다.
* DEPTNO를 그룹화 시키고, 그룹화된 전부(*)의 로우의 개수와 그룹화된 DEPTNO들의 COMM의 로우의의 개수를 센다.
3. HAVING 절
가. GROUP BY절에 의해 생성된 결과 값 중 원하는 조건에 부합하는 자료만 보고자 할때 사용
나. WHERE vs HAVING
* having 으로 AVG(SAL) 조건이 2000보다 같거나 큰값을 출력해낸다.
* 그룹별로 최대값과 최소값을 구하고, 여기에 최대값이 2900이상인 그룹만을 출력
* 위 조건에서 AND로 하여 최소값이 1000 이상인것도 조건을 추가 하였다.
* 단순 그룹은 그룹함수를 사용할수 없다.
* SAL값이 가장 높은 ENAME 만을 출력
'SQL 과정' 카테고리의 다른 글
2.7 디 버그(거) 사용법, SQL (join, 서브 쿼리) (0) 2019.02.07 2.1 SQL 관계형 데이터베이스 (0) 2019.02.01 2.1 SQL 형 변환 함수 (0) 2019.02.01 2.1 SQL 날짜 함수 (0) 2019.02.01 2.1 SQL 문자처리함수(INSERT, LPAD, RPAD, LTRIM, RTRIM, TRIM) (0) 2019.02.01