繁体   English   中英

通过分组和连接获取多个表的多列的总和

[英]Getting Sum of multiple columns of multiple tables through group by and joins


我正在使用以下查询来使用左连接从两个表中获取多个列的总和。 但是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;

您不能将聚合函数用作其他聚合函数的参数(例如: sum(count(B.order_id)) )。

如上所述,您无法嵌套聚合函数 - 即。 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根据非空记录的count加起来值,可以乘以SalesDetail记录(每个ClickRecord有多个记录) 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM