是否无法平均子查询的结果?
这是我正在与之抗争的查询:
SELECT AVG(
SELECT SUM(`retail_subtotal`)
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
);
如果你想这样做,你需要创建一个子查询。通过创建子查询,您可以为该SUM()
列命名,然后AVG()
为该新字段命名。
SELECT AVG(x.SubTotal)
FROM
(
SELECT SUM(`retail_subtotal`) SubTotal
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
) x;
实际上,表达查询的更简单方法是不使用子查询:
SELECT SUM(`retail_subtotal`)/count(distinct lead_id) as avg
FROM `order`
WHERE `status` IN ('O')
(这假设lead_id 永远不会为NULL。)
您的原始查询出现问题不仅是因为 avg() 中的子查询,还因为子查询返回了多行。
当然,只需给结果列命名并从中选择:
SELECT AVG(theSum)
FROM
(
SELECT SUM(`retail_subtotal`) AS theSum
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
) T
您正在进行选择而不指定表格。
试试这个
SELECT AVG(sum) from
(SELECT SUM(`retail_subtotal`) as 'Sum'
FROM `order`
WHERE `status` IN('O')
GROUP BY `lead_id`
) T1;
我认为这应该工作......
SELECT AVG(retail_sub) FROM
(
SELECT SUM('retail_subtotal') As retail_sub
From 'order'
WHERE `status` IN('O')
GROUP BY `lead_id`
) As Z