2012-03-09 2 views
0


다음 조인을 사용하면 왼쪽 조인을 사용하여 두 테이블의 여러 열을 더할 수 있습니다. 하지만 mysql은 "오류 코드 : 1111. 그룹 기능의 사용이 잘못되었습니다"라는 오류를 표시합니다. 실수로 어디에서 왔는지 지적하십시오.
그룹 별 및 조인을 통해 여러 테이블의 여러 열 합계 받기

SELECT url as Domain, 
    A.advertiserid as advertiserid, 
    count(A.salesId) as Impressions, 
    Sum(IF(A.click1datetime IS NULL,0,1)) AS Clicks, 
    sum(count(B.order_id)) as Sales, 
    sum(sum(B.order_amount)) as SalesAmount, 

    FROM ClickRecords A 
    left join SalesDetail B 
    on A.salesId= B.salesId 
    where 
    A.advertiserid = 52 AND 
    datetime >= '2012-03-01' AND 
    datetime < '2012-03-02' 
    group by advertiserid, Domain 
    order by impressions desc; 
+1

'SUM (COUNT'와'SUM (SUM')이 유효하지 않습니다. 테이블이 서로 어떻게 관련되어 있는지, 왜 'SUM (SUM (B .order_amount))'SUM (B.order_amount)'와는 반대로,'SUM (COUNT (B.order_id)) '에 대해서도 마찬가지인가? –

답변

1

위에서 언급 한 것처럼 집계 함수를 중첩 할 수 없습니다. sum(sum(value))은 유효하지 않습니다.

난 당신이 원하는 생각 :

SELECT url as Domain, 
     A.advertiserid as advertiserid, 
     count(distinct A.salesId) as Impressions, 
     count(distinct case when A.click1datetime IS NOT NULL then A.salesId end) 
      AS Clicks, 
     count(B.order_id) as Sales, 
     sum(B.order_amount) as SalesAmount, 
FROM ClickRecords A 
left join SalesDetail B on A.salesId= B.salesId 
where A.advertiserid = 52 AND 
     datetime >= '2012-03-01' AND 
     datetime < '2012-03-02' 
group by advertiserid, Domain 
order by impressions desc; 

주 ClickRecords 값에 대한 count(distinct ...)의 사용 - sum 또는 비 별개을 count SalesDetail 기록을 곱한 수 null 이외의 레코드 번호에 따라 값을 추가 (ClickRecord 당 둘 이상이있는 곳).

1

있습니다 (: sum(count(B.order_id)) 예를 들어) 다른 집계 함수의 매개 변수로 집계 기능을 사용할 수 없습니다.