LISTAGG(가로로 출력하기)
→ group by 절을 반드시 써야한다.
예제 : 부서번호를 출력, 해당부서번호별로 속한 사원들의 이름을 가로로 출력
select deptno, listagg(ename, ',') within group (order by ename asc)
from emp
group by deptno;
- 분석함수 ( ) 에 괄호에 무언가 채워넣어져 있다면 within group 을 사용해야한다.
- 이름과 이름사이는 ',' , 콤마로 구분하겠다.
- 어떻게 가로로 출력 하는가??
→ within group ( order by 컬럼명 asc or desc)를 쓰지 않고 listagg 만 써도 데이터 결과는 나오지만, 출력되는 결과를 정렬해서 가로로 나오게 하고싶다면 within group ( order by 컬럼명 asc or desc) 를 쓰면 된다.
- 데이터 분석함수 중 유일하게 group by 절이 필수로 필요하다.
→ 부서번호별로 이름을 가로로 출력하는것 이기때문에 부서번호별로 group by 절로 그루핑 해준다.
문제 184 : 직업, 직업별로 속한 사원들의 이름을 가로로 출력 월급이 높은 사원순으로 출력
select job, listagg(ename, ',') within group (order by sal desc)
from emp
group by job;
문제 185 : emp14_address 를 쿼리 하는데, address2 출력, 그옆에 address2 주소에 속한 학생들의 이름을 가로로출력하고, 나이가 높은 학생순으로 출력
select address2, listagg(ename, ',') within group(order by age desc) as 학생들
from emp14_address
group by address2;
문제 186 : 위의 출력결과 에서 이름옆에 ( 나이 ) 가 출력 되도록 하세요
select address2, listagg(ename||'('||age||')', ',') within group(order by age desc)as 학생들
from emp14_address
group by address2;