Mysql 通过GROUPBY和JOIN获取多个表的多列之和
Mysql 通过GROUPBY和JOIN获取多个表的多列之和,mysql,sql,Mysql,Sql,我使用下面的查询通过左联接从两个表中获取多列的总和。但是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,
我使用下面的查询通过左联接从两个表中获取多列的总和。但是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;
选择url作为域,
A.广告客户ID作为广告客户ID,
将(A.salesId)计算为印象,
单击次数总和(如果(A.click1datetime为NULL,0,1)),
销售总额(计入(B.订单号),
金额(金额(B.订单金额))作为销售额,
从ClickRecords A
左连接销售明细表B
在A.salesId=B.salesId上
哪里
A.广告客户ID=52和
日期时间>='2012-03-01'和
日期时间<'2012-03-02'
按广告客户ID、域分组
按客户要求订购;
您不能将聚合函数用作其他聚合函数的参数(例如: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;
选择url作为域,
A.广告客户ID作为广告客户ID,
将(不同的A.salesId)计为印象,
计数(当A.click1datetime不为空时,则A.salesId结束时,情况不同)
随着咔嗒声,
将(B.订单号)计算为销售额,
金额(B.订单金额)作为销售金额,
从ClickRecords A
在A.salesId=B.salesId上左键连接SalesDetail B
其中A.advertiserid=52,且
日期时间>='2012-03-01'和
日期时间<'2012-03-02'
按广告客户ID、域分组
按客户要求订购;
请注意,
count(distinct…
用于ClickRecords值-sum
或non-distinctcount
根据非空记录的数量累加值,这些记录可以乘以SalesDetail记录(每个ClickRecord有多个记录)。这是因为您嵌套了sum-sum(COUNT
和SUM(SUM
无效。您能否提供更多信息,说明您的表如何相互关联,以及为什么需要SUM(SUM(B.order\U amount))
而不是SUM(B.order\U amount)
,以及SUM(COUNT(B.order\U id))
?