2012-03-09 12 views
0


次のクエリを使用して、左結合を使用して2つのテーブルから複数の列の合計を取得しています。しかし、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'は無効です。 .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あたり2つ以上ある場合)。

1

あなたは(:sum(count(B.order_id))など)他の集計関数のパラメータとして集計関数を使用することはできません。

関連する問題