GROUP BY 규칙

결과 한 줄에 남길 값은 그룹마다 하나로 확정되어야 합니다

GROUP BY category 뒤의 결과는 그룹당 1행입니다. 따라서 SELECT에는 그룹 키처럼 이미 고정된 값이나, AVG(price)처럼 여러 행을 하나로 요약한 값만 올릴 수 있습니다.

하나의 그룹 내부

category = '전자'

결과는 1행만 생성
같은 그룹 키
노트북
price = 120000
같은 그룹 키
마우스
price = 80000
GROUP BY category

결과 행에서 확정되는 항목만 SELECT 가능

category = '전자'
AVG(price) = 100000
name = ?

SELECT 가능 여부

무엇이 확정되는가?

category
가능
그룹을 나누는 기준이라서 이 결과 행에서는 이미 전자로 고정됩니다.
AVG(price)
가능
여러 행의 price를 하나의 값 100000으로 요약합니다.
name
불가
그룹 안에 노트북, 마우스가 함께 있어 어느 값을 골라야 할지 정할 수 없습니다.

ONLY_FULL_GROUP_BY는 이런 모호한 선택을 막기 위해 오류를 냅니다. 이 모드가 꺼져 있으면 DB가 임의의 name을 반환해 잘못된 결과를 만들 수 있습니다.