2012-01-11 2 views
1

現在の月の日付(1月1日〜1月30日)、通貨(CAD、GBP、USD)のドロップダウンhtml要素があります。SQLテーブルを作成し、各固有フィールドの平均価格を取得する方法は?

時間と価格の2つの列を持つhtmlテーブルがあります。

パートI:どのようにしてmysqlにテーブルを作成しますか?

私は2つのテーブルを作成することを考えました。列id、currencyを持つもの。他のテーブルには、時、価格、日付、通貨ID(外部キー)の列があります。正しい解決策は何ですか?

一部II:私が思いついたID、market_instrument、価格

テーブルには列があります。 SELECT avg(price) FROM table WHERE market_instrument="";

しかし、予期せぬ結果は、各ユニークなmarket_instrumentの平均価格を得ることでした。正しいSQLクエリは何ですか?

答えて

0

を助け、あなたが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 

これはそれぞれのユニークなmarket_instrumentの平均価格を取得するには

+0

私はあなたが「楽器、通貨でグループ化」を意味すると仮定します。そうでなければ実際には機能しません –

+0

2番目のテーブルの通貨列はどこにありますか?通貨が必要な場合は、2番目のテーブルに外部キーフィールドを作成し、最初のテーブルを結合して3つの選択フィールドをグループ化する必要があります。 –

+0

彼の例のcurrency_id。あなたが楽器と価格をあなたの答えのようにグループ化すると、その楽器のためのすべての異なる価格(その価格に等しい平均値)の結果が得られます。 –

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の代わりに通貨コードを含めてください。

しかし、ほとんどの場合、他のデータ(通貨名など)が通貨に関連付けられていることが予想されます。その場合、提案されたデザインは合理的ですが、および日付列を単一のdatetime列として使用します。

関連する問題