2012-01-11 51 views
1

當前月份(1月1日至1月30日)的貨幣(CAD,GBP,USD)有日期下拉的html元素。如何創建一個SQL表並獲得每個唯一字段的平均價格?

有一個有兩列,小時和價格的html表。

第一部分:我將如何在mysql中創建表。

我想過創建兩個表。一個與列id,貨幣。另一個表格有小時,價格,日期,currency_id(外鍵)。什麼是正確的解決方案?

第二部分:

表中的列:ID,market_instrument,價格

我想出了。 SELECT avg(price) FROM table WHERE market_instrument="";

但預期的結果是獲得每個獨特market_instrument的平均價格。什麼是正確的SQL查詢?

回答

0

要獲得平均價格爲每一個獨特的market_instrument,你需要使用GROUP BY

SELECT market_instrument, avg(price) FROM table GROUP BY market_instrument 
1
select avg(price) as price,instrument from table 
group by instrument,price 

希望這有助於

+0

我假設你的意思是'按工具組,貨幣'分組,否則這不會真的起作用 – 2012-01-11 12:13:20

+0

你在哪裏看到第二個表中的貨幣列?如果你需要一個貨幣,你將不得不在第二個表格中創建一個外鍵字段,並在第一個表格上進行連接,然後按3個選定的字段進行分組。 – 2012-01-11 12:17:28

+0

他的例子中的currency_id。如果按照您的答案按工具和價格進行分組,則您會得到針對工具的每個不同價格的結果(平均值等於該價格)。 – 2012-01-11 12:23:59

0
select market_instrument, avg(price) from table group by market_instrument 
0

你想讓它每儀器(我每貨幣假設)so:

SELECT AVG(price), instrument 
FROM table 
GROUP BY instrument, currency 
0

第1部分:如果您只有貨幣代碼(CAD,GBP,USD)與貨幣(無名稱,匯率或任何其他數據)關聯,那麼您不要有一個單獨的表對於貨幣 - 只需在主表中包含貨幣代碼而不是貨幣ID。

但是,大多數情況下,我希望其他數據(如貨幣名稱等)與貨幣相關聯 - 在這種情況下,您提出的設計是合理的,但我會傾向於將小時並將日期列作爲單個日期時間列。

相關問題