获得某类产品的平均价格

时间:2012-04-30 17:01:34

标签: mysql sql

我的数据库看起来像:

Table - Products
products_id 
products_price 

Table - Products_to_Categories
categories_id
products_id 

Table - Products_Descriptions
products_name

Table - Categories_Descriptions
categories_name

还有其他一些列,但这些是我需要的。

我想选择以上所有列,但我也希望每个类别的平均产品价格

我知道它可能会包含AVG()函数,但我尝试了一堆不同的查询(我是一个学习者),如果我能找出有用的东西,我会感到不安。只用一个查询就可以做到这一点吗?我现在无法理解它。

非常感谢任何帮助。 :(

3 个答案:

答案 0 :(得分:1)

以下是针对一个类别执行此操作的查询,然后您可以更改每个类别的类别ID。

SELECT AVG(product_price) FROM Products WHERE products_id IN (SELECT products_id FROM Products_to_Categories WHERE categories_id = x)

答案 1 :(得分:1)

使用聚合函数时,您可能需要使用GROUP BY子句。

以下是使用AVG功能的手册中的示例: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_avg

您的查询会有点复杂,因为您需要加入表格,但使用group by的想法是相同的。

如果你很好奇,可以参考GROUP BY的更多信息 http://dev.mysql.com/doc/refman/5.6/en/group-by-modifiers.html

答案 2 :(得分:1)

在category_name和/或category_id上加入表,然后加入一个组。 Jrod上面突出显示的链接是很好的参考:

SELECT AVG(p.product_price), c.category_name
FROM Products p
    INNER JOIN Products_to_Categories pc ON p.product_id = pc.product_id
    INNER JOIN Categories c on pc.category_id = c.category_id
GROUP BY c.category_name