SQL平均值和加入

时间:2017-03-11 11:22:22

标签: mysql sql join average

我试图将这两个语句合并到一个查询中,以获取产品名称(或ID)的列表与其TTFF数据的平均值,并且我被卡住了。

select AVG(TTFF) from TTFFdata group by product_id

select product.product_name, count(*) from product join TTFFdata on product.product_id = TTFFdata.product_id

我已经考虑过使用临时表(CREATE TEMPORARY TABLE IF NOT EXISTS averages AS (select AVG(TTFF) from TTFFdata group by product_id)),但无法使用临时表。

有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

您需要了解组件。您的第二个查询缺少group by。这似乎是你想要的:

select p.product_name, count(t.product_id), avg(t.TTFF)
from product p left join
     TTFFdata t
     on p.product_id = t.product_id
group by p.product_name

答案 1 :(得分:0)

最好在product_id,product_name上执行group by,原因有两个。一个是,您可以选择产品ID和产品名称。第二个原因是,如果产品名称不是唯一的,那么它可能会给出错误的结果(这可能是一种罕见的情况,例如产品名称相同,但它根据版本或型号等其他列而不同)。以下是最终查询。

select Product.product_id, 
product_name,
AVG(TTFF) as Avg_TTFF 
from Product
inner join
TTFFdata
on Product.product_id = TTFFdata.product_id
group by Product.product_id,Product.product_name 

TTFFdata:

enter image description here

产物:

enter image description here

输出:

enter image description here