数据库存储给定日期的货币兑换率。每天收集一个货币兑换值并将其存储在数据库中,如下所示:| ID(整数,AI)|价值|日期|| - ------|- ------|- ------|| 1个|二、五|二○二一年一月二十日|| 第二章|二、七|二零二一年一月二十一日|| 三个|二、六|二零二一年一月二十二日|如果我想计算最近10天的平均汇率,我是否应该先按日期排序,然后在下载数据时只取用最后10条记录,还是只从数据库下载最后10条记录而不进行排序?
0s7z1bwu1#
您可以简单地在SQL Server数据库中进行
SELECT TOP 10 AVG(VALUE) AS AverageRate FROM YourTable ORDER BY Id DESC
概念应与其他关系数据库相同。
wa7juj8i2#
**SQL中的表(以及视图和CTE等表表达式)表示 * 无序集 *。*要按特定顺序获取数据, 必须 * 指定ORDER BY子句。
ORDER BY
在相当通用的SQL中,您可以执行以下操作
SELECT AVG(VALUE) AS AverageRate FROM ( SELECT VALUE FROM YourTable AS t ORDER BY Id DESC OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY ) AS t
在某些RDBMS中,您可以使用LIMIT或TOP来代替OFFSETFETCH,以达到相同的效果。
LIMIT
TOP
OFFSET
FETCH
w41d8nur3#
你可以用两种方法来做。如果你使用SQL和Dapper或者ADO.NET,那么你可以写一个查询。如果你需要最后10个值,它应该被排序
SELECT TOP 10 AVG(your value) AS average FROM YourCurrencyExchangeTable ORDER BY DATE DESC
如果使用的是EntityFrameWorkCore,则可以编写
var avg = db.yourDbContext .Where(c => c.Date >= tenDaysAgoDate) .Average(c => c.yourValue)
我希望我的回答能有所帮助:)
shyt4zoc4#
基本上,您必须首先排序(按日期),然后获取最后10个值,所以您的方向是正确的。
4条答案
按热度按时间0s7z1bwu1#
您可以简单地在SQL Server数据库中进行
概念应与其他关系数据库相同。
wa7juj8i2#
**SQL中的表(以及视图和CTE等表表达式)表示 * 无序集 *。*要按特定顺序获取数据, 必须 * 指定
ORDER BY
子句。在相当通用的SQL中,您可以执行以下操作
在某些RDBMS中,您可以使用
LIMIT
或TOP
来代替OFFSET
FETCH
,以达到相同的效果。w41d8nur3#
你可以用两种方法来做。
如果你使用SQL和Dapper或者ADO.NET,那么你可以写一个查询。如果你需要最后10个值,它应该被排序
如果使用的是EntityFrameWorkCore,则可以编写
我希望我的回答能有所帮助:)
shyt4zoc4#
基本上,您必须首先排序(按日期),然后获取最后10个值,所以您的方向是正确的。