平均从子查询返回的列

Mik*_*980 3 sql mysqli

是不可能平均子查询的结果?

这是我正在与之抗争的问题:

SELECT AVG(
    SELECT SUM(`retail_subtotal`)
      FROM `order`
     WHERE `status` IN('O')
  GROUP BY `lead_id`
);
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

Tar*_*ryn 10

如果要执行此操作,则需要创建子查询.通过创建子查询,然后为SUM()列命名,然后AVG()为该新字段.

SELECT AVG(x.SubTotal)
FROM
(
    SELECT SUM(`retail_subtotal`) SubTotal
      FROM `order`
     WHERE `status` IN('O')
  GROUP BY `lead_id`
) x;
Run Code Online (Sandbox Code Playgroud)

  • @ Mikey1980我们以前都做过.:) (2认同)

Gor*_*off 7

实际上,一种更简单的方式来表达查询是没有子查询:

SELECT SUM(`retail_subtotal`)/count(distinct lead_id) as avg
FROM `order`
WHERE `status` IN ('O')
Run Code Online (Sandbox Code Playgroud)

(这假设 Lead_id 永远不会为 NULL。)

您的原始查询有问题,不仅因为 avg() 中的子查询,还因为子查询返回多行。