2012-01-11 32 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。

但是,大多数情况下,我希望其他数据(如货币名称等)与货币相关联 - 在这种情况下,您提出的设计是合理的,但我会倾向于将小时并将日期列作为单个日期时间列。

相关问题