함수를 사용할 때 group by를 사용해주어야 하는 이유는 바로..!
함수가 적용되어야 하는 범위를 설정해 줄 필요가 있기 때문이다.
예를 들어, 레스토랑 별로 주문 수를 카운트 하고 싶다면 아래와 같이 쿼리를 작성해야 한다.
select restaurant_name, count(1) cnt_order
from food_orders fo
group by 1
restaurant_name을 기준으로 카운트 하라는 쿼리에 따라, 레스토랑 별 주문 수를 계산할 수 있게 된다.
계속 헷갈렸던 부분이 group by 를 쓰지 않으면 왜 결과값으로 한 행만 나오는가 하는 것이었다.
select restaurant_name, count(1) cnt_order
from food_orders
위와 같이 쿼리를 작성하는 경우, count()함수가 적용되어야 하는 범위가 설정되지 않는다.
범위가 정해져 있지 않으니, 모든 오더 수를 카운트 해서 결과값을 가져오게 된다.
count()함수에 대한 결과로 하나의 값만 가지게 되니, 당연히 한 행만 결과로 나타나는 것.
다시 말해,
그룹핑을 해준 경우, 해당 그룹을 기준으로 함수 연산이 진행되고,
그룹핑을 해주지 않는 경우, 특정 범위 없이 모든 데이터를 대상으로 함수 연산이 진행된다.