2017-03-11 92 views
0

我試圖將這兩個語句合併到一個查詢中,以獲得產品名稱(或ids)與他們的TTFF數據的平均值列表,並且我被卡住了。SQL的平均值和加入

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

您需要了解組件。您的第二個查詢缺少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 
+0

現在工作 - 我認爲這只是一個大寫的名字。謝謝。 – Robin

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