我试图将这两个语句合并到一个查询中,以获取产品名称(或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)
),但无法使用临时表。
有人能帮助我吗?
答案 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