-> 여러 행들이 모여 하나의 결과를 돌려주는 함수
집 계 함수명 ( DISTINCT/ALL 칼럼이나 표현식 ) |
SELECT COUNT(* ) from TMP |
-> 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통계 정보를 얻을 때 추가로 사용된다.
오류 | SELECT POSITION 포지션, AVG(HEIGHT)평균키 FROM PLAYER; |
정상 | SELECT POSITION 포지션, AVG(HEIGHT)평균키 FROM PLAYER GROUP BY POSITION ; |
|
-> HAVING 절에 맞는 조건을 출력하여 주는 것으로 보통 GROUP BY 절 뒤에 서술(순서를 바꾸어도 상관은 없음)
{info}주의 할 점은 WHERE 절의 조건 변경은 대상 데이터의 개수가 변경되므로 결과 데이터 값이 변경될 수 있지만, HAVING 절의 조건 변경은 결과 데이터 변경은 없고 출력되는 레코드의 개수만 변경될 수 있다. {info} |
-> "집계 함수(CASE( ))~GROUP BY" 기능은 모델링의 저11정규화로 인해 반복되는 칼럼의 경우 구분 칼럼을 두고
여러 개의 례코드로 만들어진 집합을, 정해진 칼럼 수만큼 확장해서 집계 보고서를 만드는 유용한 기법이다.
-> 다중 행 함수를 사용 하는 것은 불필요한 부하가 발생하고 연산시 Null에 대한 부분을 함수에서 제외 하므로 다중행 함수안에서는 NVL/ISNULL 사용이 불필요
NULL값을 0으로 변경 등으로 사용하고자 한다면 다중행 함수 바깥에서 사용하면 원하는 값을 볼 수 있다.
{tip} | simple_case_expression | decode문과 유사 | SELECT deptno, case deptno when 10 then 'ACCOUNTING' when 30 then 'SALES' else 'ETC' end as dept from emp |
searched_case_expression | if..then..else문과 유사, when 절 다음에 여러가지 조건 가능 | SELECT deptno, case when deptno = 10 then 'ACCOUNTING' when deptno = 30 then 'SALES' else 'ETC' end as dept from emp | |