Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 通过GROUPBY和JOIN获取多个表的多列之和_Mysql_Sql - Fatal编程技术网

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-distinct
count
根据非空记录的数量累加值,这些记录可以乘以SalesDetail记录(每个ClickRecord有多个记录)。

这是因为您嵌套了sum-
sum(COUNT
SUM(SUM
无效。您能否提供更多信息,说明您的表如何相互关联,以及为什么需要
SUM(SUM(B.order\U amount))
而不是
SUM(B.order\U amount)
,以及
SUM(COUNT(B.order\U id))