如何使用一个数据库表计算随时间的差异?
Posted
技术标签:
【中文标题】如何使用一个数据库表计算随时间的差异?【英文标题】:How do I calculate the difference over time using one database table? 【发布时间】:2014-06-30 13:14:40 【问题描述】:我有一个包含三列的表格:Player、Score 和 Date。
我想创建一个查询,将每个玩家的总得分与一周前的总得分进行比较。
例如,我希望能够收集信息以便能够输出:
1st place this week: **Bob** (**1875** Score) - up by **7** points since last week!
谢谢
编辑:根据要求添加更多信息。
目前,我有几个查询显示总分、平均分等数据。
当我在网站上输入这些数据时,我手动计算了差异有多少。示例:
Player Champion Role Games Ratio Sum Of Kills Sum Of Deaths Startmanningup Ezreal Adc 8 4.20 63 15 Voyboy Tristana Adc 4 3.33 30 9
如果上周 Startmanningups 比率是 4.18,我想要一个列来显示差异是 0.02。
我的餐桌信息如下所示:
Player Champion Role Kills Deaths Assists Win Time lord zosh master yi jungle 11 2 6 1 2014-06-27 lolbree lucian adc 7 0 7 1 2014-06-27
编辑 2:
好的,我可以得到一个查询,该查询将显示我想要比较的数字。但我不知道如何使用实际显示分数差异的列进行查询(在 Access 中,我不断收到聚合查询错误)。
【问题讨论】:
请提供示例数据并尽最大努力解决问题。 数据库是 MS Access 【参考方案1】:用于名为 [Scores] 的表中的测试数据
Date Player Score
---------- ------ -----
2014-06-23 Gord 30
2014-06-23 Hank 23
2014-06-30 Gord 27
2014-06-30 Hank 28
查询
SELECT
cur.Date,
cur.Player,
prev.Score AS ScoreLastWeek,
cur.Score AS ScoreNow,
cur.Score - prev.Score AS Change
FROM
Scores cur
INNER JOIN
Scores prev
ON cur.Player = prev.Player
AND cur.Date = DateAdd("d", 7, prev.Date)
返回
Date Player ScoreLastWeek ScoreNow Change
---------- ------ ------------- -------- ------
2014-06-30 Gord 30 27 -3
2014-06-30 Hank 23 28 5
【讨论】:
有没有办法在一条 SQL 语句中完成所有操作,而不是使用多个查询?我不介意答案是用 postgresql 还是其他非杂乱的 sql 语言(访问 sql 括号太多)【参考方案2】:获取当前平均分:
select player, avg(score)
from score_table
group by player
order by avg;
要获得一周前的平均分,您可以:
select player, avg(score)
from score_table
where score_table.date < now()-'1 week'::interval
group by player
order by avg;
这可以让您开始获取一些数据来处理并在您的应用中组合以产生所需的输出。
【讨论】:
问题被标记为“ms-access”,这看起来不像 Access 语法。 遇到语法错误 - MS Access 中是否有类似的功能? Q 最初没有被标记为 [ms-access]!我没有用过,也从来没有用过,但谷歌快速浏览一下就知道了:office.microsoft.com/en-us/access-help/…这有什么帮助吗? 好的,现在我不断收到“聚合查询”错误。我做了一个查询,显示 1 周前的平均分数。我正在尝试进行另一个查询,将该平均分数与当前分数进行比较平均分数,但我无法让它发挥作用。 我能不能只使用某种带有子选择的 SQL 语句?以上是关于如何使用一个数据库表计算随时间的差异?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SQL 获取 2 列之间日期差异的计数(值的分布)?
如何计算行值相对于其他行值的差异总和,特别是使用窗口函数不包括该行