포스팅 목차
o XMLAGG ( = XML + AGG(aggregate) )
문 법
XMLAgg::=
목 적
XMLAgg 함수는 집계 함수이다. XML fragment(조각, 요소)의 집합체를 인수로 지정한 후 이 결과를 하나로 취합하여 XML 문서를 생성하여 반환한다.
NULL 값을 반환하는 인수는 결과로부터 제외된다.
XMLAgg 함수는 노드들의 모음을 반환한다는 점을 제외하면 SYS_XMLAgg 함수와 유사하지만 XMLFormat 객체를 사용한 서식을 허용하지 않는다. 또한 XMLAgg 함수는 SYS_XMLAgg 함수와 달리 출력 과정에서 요소 태그로 둘러싸지 않는다. order_by_clause 절 내에서 Oracle 데이터베이스는 이 절의 다른 사용법과 달리 수치형 리터럴을 열 위치로 해석하지 않고 단순히 수치형 리터럴로 해석한다.
참 조 : XMLELEMENT and SYS_XMLAGG 함수 |
관련 함수
함수명 | 함수내용 |
DEPTH | UNDER_PAHT와 EQUALS_PAHT 조건과 함께 이용되는 보조 함수이다. 이 함수는 같은 상관 변수를 가지는 UNDER_PATH조건에 의해 지정된 PATH에서 레벨의 수를 반환한다. |
EXISTSNODE | XPath에서 node의 존재 여부를 확인하여 그 결과를 반환한다. |
EXTRACT (XML) | VARCHAR2 XPath 문자열에서 XML 플래그먼트(fragment)를 포함한 XMLType 인스턴스를 반환한다. |
EXTRACTVALUE | existsnode 함수와 유사한 함수로써 결과 node의 스칼라 값을 반환한다. |
PATH | under_path나 equals_path의 보조 함수로서, 자원의 관계 경로를 반환한다. |
SYS_DBURIGEN | 하나 이상의 열 또는 속성 및 선택적으로 ROWID를 인수로 지정하여서, 특정 열 또는 행 오브젝트에 대한 DBURIType 데이터 타입의 URL을 생성한다. |
SYS_XMLAGG | 입력받은 모든 문서를 취합하여서 하나의 XML 문서를 통합한다. |
SYS_XMLGEN | 스칼라 값, object type, xml type 인스턴스를 XML 문서로 변형한다. |
XMLAGG | XML fragment(조각)의 집합체를 인수로 지정한 후 이 결과를 하나로 취합하여 XML 문서를 생성하여 반환한다. |
XMLCOLATTVAL | 파라미터로 지정한 변수들을 "column name" 속성으로 구성된 XML 조각(XML fragment)으로 변환하고, 이 결과를 취합한 XML 문서를 생성한다. |
XMLCONCAT | 둘 이상의 XML 값을 연결하는 함수. |
XMLELEMENT | XML 문서를 생성하기 위하여 identifier에 대한 요소의 이름(element name), 요소에 대한 속성의 옵션 집합, 요소의 내용으로 구성된 인수를 지정한다. |
XMLFOREST | 개별 인수의 파라미터를 XML로 변환하고, 변환된 인수를 결합한 XML 조각(XML 단편, XML fragment)을 반환한다. |
XMLSEQUENCE | - XMLType 인스턴트를 지정하여서 XMLType에 있는 top-level 노드의 varray를 반환한다. - XMLFormat 오브젝트의 옵션 인스턴스를 가지는 REFCURSOR 인스턴스를 지정하여서 커서의 각 행에 대하여 XMLSequence 형태로써 XML 문서를 반환한다. |
XMLTRANSFORM | XMLType인스턴스와 그 자체가 XMLType 인스턴스인 XSL스타일 시트를 인수로 지정한다. 이 함수는 스타일 슈트를 인스턴스로 적용하여서 XMLType를 반환한다. |
[오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크]
예 제
다음 예제는 Employee 요소의 구성 요소로 직원의 Job ID와 성을 함께 사용하여서 부서(Department) 요소를 생성한다.
Oracle Program |
SELECT XMLELEMENT("Department",
XMLAGG(XMLELEMENT("Employee",
e.job_id||' '||e.last_name)
ORDER BY last_name)) as "Dept_list"
FROM employees e
WHERE e.department_id = 30;
Results |
Dept_list
-------------------------------------------------------------
<Department>
<Employee>PU_CLERK Baida</Employee>
<Employee>PU_CLERK Colmenares</Employee>
<Employee>PU_CLERK Himuro</Employee>
<Employee>PU_CLERK Khoo</Employee>
<Employee>PU_MAN Raphaely</Employee>
<Employee>PU_CLERK Tobias</Employee>
</Department>
XMLAgg 함수가 행을 집계하기 때문에 결과는 단일 행으로 반환된다. GROUP BY 절을 사용하여 반환되는 행 집합을 여러 그룹으로 그룹화할 수 있다.
Oracle Program |
SELECT XMLELEMENT("Department",
XMLAGG(XMLELEMENT("Employee", e.job_id||' '||e.last_name))) AS "Dept_list"
FROM employees e
GROUP
BY e.department_id;
Results |
Dept_list
---------------------------------------------------------
<Department>
<Employee>AD_ASST Whalen</Employee>
</Department>
<Department>
<Employee>MK_MAN Hartstein</Employee>
<Employee>MK_REP Fay</Employee>
</Department>
<Department>
<Employee>PU_MAN Raphaely</Employee>
<Employee>PU_CLERK Khoo</Employee>
<Employee>PU_CLERK Tobias</Employee>
<Employee>PU_CLERK Baida</Employee>
<Employee>PU_CLERK Colmenares</Employee>
<Employee>PU_CLERK Himuro</Employee>
</Department>
. . .
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
2024.01 수정
반응형
'오라클 게시판 > 오라클 함수' 카테고리의 다른 글
【오라클(Oracle) SQL 함수】 XMLELEMENT 함수 (0) | 2021.10.25 |
---|---|
【오라클(Oracle) SQL 함수】 XMLCOLATTVAL 함수 (0) | 2021.10.24 |
【오라클(Oracle) SQL 함수】 WIDTH_BUCKET 함수 (0) | 2021.10.24 |
[오라클 SQL 함수] VSIZE 함수 (0) | 2021.10.24 |
【오라클(Oracle) SQL 함수】 VARIANCE 함수 (0) | 2021.10.24 |
댓글