2014-11-06 2 views
0

이 질문을 이해하려면 예제 데이터가 필요하지 않습니다. 나는 다음과 같이 각 고객과 관련된 사업을 결정하기 위해 쿼리를 쓰고 있어요 :쿼리의 그룹 별 원인에 대한 오해의 소지가 있습니다.

select 
    customers.cust_id, 
    sum(OrderItems.Quantity * OrderItems.Item_Price) as total_business 
from 
    Customers 
    left outer join 
    Orders on Customers.cust_id = orders.cust_id 
    left outer join 
    OrderItems on orders.order_num = orderitems.order_num 
-- group by Customers.cust_id -- why do I need this if I'm just trying to access the cust_id column? 
order by total_business 

나는 group by 절을해야하는 이유 난 그냥 cust_id 열을 액세스하기 위해 노력하고있어 만약 내가, 이해가 안 돼요. 나는 (select) 새 테이블에 속하는 모든 열에 액세스 할 수있는 인상을 받고있었습니다.

답변

4

일반 열 선택과 sum() 같은 집계 함수를 함께 사용할 수 없기 때문에.

집계 또는 일반 열만 사용하거나 열을 기준으로 그룹화하고 나머지는 집계를 사용하십시오.

예 : 지금 당신은 당신이 다음

select count(type) from food where type = 'fruits' 

을 과일의 수를 원하는 경우 음식 이름은 다음

select name from food 

를 사용하고 싶지만 경우

food table 
------------ 
name type 
------------ 
tomato vegetables 
mango fruits 
kiwi fruits 
potato vegetables 

당신은 수를 원하는 경우 모든 종류의 음식에 대해

select type, count(*) from food group by type 
+2

+1은 훌륭한 설명이지만, 감자가 실제로 야채인지 알아 내려고하면서 3 분을 낭비하게 만들었 기 때문에 지금 재고하고 있습니다. :) – AHiggins

0

그룹화 기준을 지정하지 않으면 결과 집합에 모든 고객의 모든 주문마다 행이 하나씩 표시됩니다. 해당 고객에 대한 모든 주문의 확장 된 가격의 합계와 함께 모든 고객에 대해 한 행을 원하게됩니다.

관련 문제