是否无法平均子查询的结果?
以下是我正在与之抗争的问题:
SELECT AVG(
SELECT SUM(`retail_subtotal`)
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
);
感谢您的帮助!
答案 0 :(得分:10)
如果要执行此操作,则需要创建子查询。通过创建子查询,您可以为SUM()
列指定一个名称,然后AVG()
该新字段。
SELECT AVG(x.SubTotal)
FROM
(
SELECT SUM(`retail_subtotal`) SubTotal
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
) x;
答案 1 :(得分:4)
实际上,一种更简单的查询短语的方法是没有子查询:
SELECT SUM(`retail_subtotal`)/count(distinct lead_id) as avg
FROM `order`
WHERE `status` IN ('O')
(这假设lead_id永远不会为NULL。)
原始查询出现问题不仅是因为avg()中的子查询,还因为子查询返回了多行。
答案 2 :(得分:2)
当然,只需给结果列命名并从中进行选择:
SELECT AVG(theSum)
FROM
(
SELECT SUM(`retail_subtotal`) AS theSum
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
) T
答案 3 :(得分:1)
你在没有指定表的情况下进行选择。
试试这个
SELECT AVG(sum) from
(SELECT SUM(`retail_subtotal`) as 'Sum'
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
) T1;
答案 4 :(得分:1)
我认为这应该有用......
SELECT AVG(retail_sub) FROM
(
SELECT SUM('retail_subtotal') As retail_sub
From 'order'
WHERE `status` IN('O')
GROUP BY `lead_id`
) As Z