• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

group by 칼럼명 여러개 넣기

22.06.25 17:00 작성 조회수 151

0

 

저는 주로 group by 할때 아래처럼 select 에 들어가는 칼럼을 몽땅 넣는데

 

select b.dname, a.empno, a.ename, round(avg(c.sal), 2)

group by b.dname, a.empno, a.ename

 

선생님처럼 max 같은 집계함수로 처리하는거랑 어떤 차이가 있나요??

답변 1

답변을 작성해보세요.

0

큰 차이는 없습니다. 

제가 아래와 같이 max(a.ename)을 사용한 이유는 group by 절에 사용되지 않은 컬럼을 select절에 출력하기 위해서는 aggregation을 적용해야 한다는 것을 보여드리기 위해서 사용한 것입니다.  

select b.dname, a.empno, max(a.ename)

from emp

group by b.dname, a.empno

적어 주신대로 group by b.dname, a.empno, a.ename와 같이 group by 절에 ename이 기술되면 select절에 굳이 max(ename)을 사용할 필요가 없습니다. 

다만 이렇게 사용하실때 유의하실 사항이 있습니다. select 절에 해당 컬럼을 사용하기 위해서 불필요하게 group by 컬럼이 추가된 것인지 점검해 봐야 합니다. group by b.dname, a.empno, a.ename은 empno 레벨로 uniq하므로 a.ename이 group by에 추가되어도 별 문제가 없습니다만, 이와 같지 않은 경우에 group by 레벨이 변할 수 있으므로 유의해야 합니다. 

또 굳이 따지자면 대용량 데이터의 경우 group by 레벨이 하나 더 있으므로 수행시각이 쪼오금~ 더 걸릴 수 있습니다. 

뀨구기님의 프로필

뀨구기

질문자

2022.06.25

감사합니다.