작성
·
219
0
안녕하세요,
group by 강의 중 궁금한 점이 생겨서 문의 드립니다.
select job,count(*)
from hr.emp
group by job;
해당 쿼리를 실행하면 job 별 직원 숫자가 count 되는데,
여기서 추가로 각 job 별 직원 숫자에 해당되는 empno 를 출력하고 싶은데 어떻게 하면 될까요?
group by를 사용하면 칼럼에 집계함수를 사용한 칼럼한 사용할 수 있다고 하셨는데.. 아이디어가 떠오르지 않네요
감사합니다.
답변 1
0
안녕하십니까,
원하는 출력 결과가 잘 이해가 안되는 군요.
group by를 deptno로 하면 deptno 레벨로 결과가 나오는 데 이걸 아래와 같이 출력하고자 함인가요?
deptno count empno_list
10 2 [700, 701]
20 3 [702, 703, 704]
만약 그렇다면, 기본적으로 group by SQL은 위 방식을 지원하지 않습니다.
하지만 방법은 있습니다. 아래와 같이 array_to_string(array_agg(), delimter 문자열) 함수를 사용하는 것입니다.
SELECT DEPTNO, count(*),
ARRAY_TO_STRING(ARRAY_AGG(ENAME), ',' ) FROM EMP GROUP BY DEPTNO;
array_to_string(array_agg(), delimter 문자열)는 ANSI SQL 표준이 아닙니다. PostgreSQL에서 지원하는 별도의 함수 입니다.
감사합니다.