mysql avg on multiple inner join

时间:2013-08-21 11:53:11

标签: mysql inner-join average

我有以下查询:

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的数量

更改查询

由于

1 个答案:

答案 0 :(得分: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;