首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取比较所有用户的两个字段之间的最大差异?

如何获取比较所有用户的两个字段之间的最大差异?
EN

Stack Overflow用户
提问于 2009-09-25 13:55:40
回答 4查看 96关注 0票数 0

我有一个表,其中包含25个技能的列skill1xp、skill1lvl和skill1rank。每天我都为所有用户更新它,所以有一个datetime列。我正在为一款游戏做一个高分的进度跟踪器,对许多用户来说,我只剩下一个功能,那就是某段时间(天/周/月)的最高收益。

我想这是一个沉重的问题,but...how我会这么做吗?

表结构:http://pastebin.com/m5903aa17

EN

回答 4

Stack Overflow用户

发布于 2009-09-25 14:19:04

如果您想知道某段时间内每个用户的的最高收益,那么您肯定需要处理来自SQL存储过程的数据。

获取一个DataTable中的所有数据,然后找到一个周期的最大值。

假设你想要找到一周内的最大收益。

代码语言:javascript
运行
复制
days: 01|02|03|04|05|06|07|08|09|10|11|12|13|14|15
      |....................|
        |....................|
           |....................| 
                    .... etc ...
                            |....................|

int minDay = 1, daysPeriod = 7, maxDay = 15, maxGain = 0, startDay = 0;
for(int i = minDay; i < maxDay - daysPeriod; i++)
{
      int value = 0;
      for(int k = 0; k < daysPeriod; i++)
        value += (int)dataTable.Rows[i + k]["Gain"];
      if(value >= maxGain)
      {
        maxGain = value;
        startDay = i;
      }
}

接下来,只需向用户显示开始日期和周期,当然还有最大增益。

如果您使用一个7 (daysPeriod)数组,并且只迭代一次,直到达到所有15个元素,则此算法可以进行优化。

票数 0
EN

Stack Overflow用户

发布于 2009-09-25 14:28:24

为了显示“谁在给定时间内赢得了最多的XP ",您需要以至少"X”的粒度存储有多少XP用户获胜。最简单的解决方案几乎肯定是存储XP won和时间戳,给你一个秒的"X“。

代码语言:javascript
运行
复制
create table xprewarded (
  track_users_id int(11) NOT NULL,
  xpreward int(11) NOT NULL,
  rewardtime timestamp NOT NULL DEFAULT NOW()
);

要获得在过去一天中赢得最多经验的人:

代码语言:javascript
运行
复制
select 
    sum(xpreward), 
    track_users_id 
from xprewarded 
where rewardtime > now()-86400
group by track_users_id 
order by sum(xpreward) desc limit 1;

" now ()- 86400“是指定”从现在起,回顾86400秒(或'24小时‘),并返回自那以后创建的任何记录“的过滤器。其他时间段可以用类似的数学方法来完成。

票数 0
EN

Stack Overflow用户

发布于 2009-09-25 14:51:07

@TML:我需要得到每个人的XP,Rank和Level的区别,而不仅仅是XP。

@pixel3cs:

你的帖子让我开始思考。如果我遍历所有用户,如果差值大于已经存在的值,我可以将差值放入一个数组中。所以,我认为这是可行的:http://pastebin.com/m26b60996

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1477426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档