1

我有以下查询:

SELECT ROUND(AVG( p.price ),2) as Avg_value
FROM quotes 
inner join `system_users`
ON quotes.created_by = system_users.id
inner join quote_items s
ON s.quote_id = quotes.id
inner join new_products p
ON p.id = new_product_id

您如何根据看到的情况确定平均值:系统用户可以有许多报价,一个报价可以有许多报价项目,每个报价项目都有一个产品。

我希望平均值基于报价的数量。必须如何更改查询才能使其基于 quote_items 的数量

谢谢

4

1 回答 1

1

如果我正确理解了您的问题(我可能没有正确理解),那么您正在寻找每个报价的平均价格。假设报价是该报价的所有产品价格的总和,则以下查询应该有效。它首先获取每个报价的总价(在子查询中),然后取平均值。

SELECT ROUND(AVG(x.quote_price),2) as Avg_value

FROM

(

SELECT  quotes.id, SUM(p.price) quote_price

FROM    quotes 

        inner join `system_users`
        ON quotes.created_by = system_users.id

        inner join quote_items s
        ON s.quote_id = quotes.id

        inner join new_products p
        ON p.id = new_product_id

GROUP BY quotes.id

) x;
于 2013-08-21T12:40:33.337 回答