ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 만을 출력



Designed by Tistory.