본문 바로가기

DataBase/SQL

[SQL] Group by 컬럼 사용 팁

쿼리를 작성하다가 다음 같은 오류를 만났다.

 

SQL Error : ORA-00979 : GROUP BY 표현식이 아닙니다

 

 이 오류는 집계 함수를 사용할 때, 집계 함수에 쌓이지 않는 컬럼들은 전부 group by 리스트에

있어야 하는데 ... 이 중에 빠진게 있다는 말이 되겠다.

 ( 집계 합수 : sum(), count()... 등등 )

 

다음의 예를 들어 보면 쉽게 이해가 될 것이라 사료된다. 

 

 

SELECT  

          a.ID,

          a.column1,

          sum(NVL(b.VALUE, 0))

FROM TEST_TABLE a 

    LEFT JOIN TEST_TABLE b ON ( a.ID= b.ID AND a.TYPE =  b.TYPE AND b.TYPE = 8 )

WHERE a.ID = 1111

GROUP BY a.ID, a.column1;

 

대충 이런 구문이 있다고 한다면, 붉게 표시한 것과 같이 표현 되어야 한다는 것이다.

즉, GROUP BY를 사용하려면 select문에 들어가는 컬럼은 GROUP BY에 추가 되거나,

집계 함수로 표현 되거나 해야 한다.