Получение суммы нескольких столбцов нескольких таблиц через group by и объединения - PullRequest
0 голосов
/ 09 марта 2012


Я использую следующий запрос, чтобы получить сумму нескольких столбцов из двух таблиц, используя левое соединение.Но mysql показывает ошибку «Код ошибки: 1111. Недопустимое использование групповой функции».

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Как отмечено выше, вы не можете вкладывать функции агрегации - т.е. 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;

Обратите внимание на использование count(distinct ...) для значений ClickRecords - sum или недифференцированных count сложение значений, основанных на количестве ненулевых записей, которые могут быть умножены на записи SalesDetail (если их больше одного за ClickRecord).

1 голос
/ 09 марта 2012

Нельзя использовать функции агрегирования в качестве параметров других функций агрегирования (например: sum(count(B.order_id))).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...