是不是不能对子查询的结果求平均?
下面是我正在与之抗争的查询:
SELECT AVG(
SELECT SUM(`retail_subtotal`)
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
);发布于 2012-07-27 02:09:15
实际上,编写查询语句的一种更简单的方法是不使用子查询:
SELECT SUM(`retail_subtotal`)/count(distinct lead_id) as avg
FROM `order`
WHERE `status` IN ('O')(这里假设lead_id从不为NULL。)
原始查询有问题,这不仅是因为avg()中的子查询,还因为子查询返回了多行。
发布于 2012-07-27 02:02:27
如果要执行此操作,则需要创建子查询。通过创建子查询,您可以为SUM()列指定一个名称,然后对新字段执行AVG()操作。
SELECT AVG(x.SubTotal)
FROM
(
SELECT SUM(`retail_subtotal`) SubTotal
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
) x;发布于 2012-07-27 02:02:30
当然,只需给结果列一个名称并从中进行选择:
SELECT AVG(theSum)
FROM
(
SELECT SUM(`retail_subtotal`) AS theSum
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
) Thttps://stackoverflow.com/questions/11675265
复制相似问题