我有一个表格,其中包含datetime类型的时间戳字段.我需要将定义的开始和结束时间之间的数据聚合成x组,表示相等长度的时间间隔,其中x作为函数参数提供.
用Hibernate做这个的最好方法是什么?
编辑:一些解释
mysql表:
data_ts: datetime pk
value1 : int
value2 : bigint
...
Run Code Online (Sandbox Code Playgroud)
实体类:
Calendar dataTs;
Integer value1;
BigDecimal value2;
...
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个类似的HQL查询
select max(c.value1), avg(c.value2) from MyClass c
where c.dataTs between :start and :end group by <interval>
Run Code Online (Sandbox Code Playgroud)
其中整个时间段被分组为x个相等大小的时间间隔.
例:
Start : 2008-10-01 00:00:00
End : 2008-10-03 00:00:00 (2 days)
Groups: 32
Run Code Online (Sandbox Code Playgroud)
需要按照1.5小时(48小时/ 32)的时间间隔进行分组:
2008-10-01 00:00:00 - 2008-10-01 01:29:59
2008-10-01 01:30:00 - 2008-10-01 02:59:59
2008-10-01 02:00:00 - 2008-10-01 04:29:59
...
Run Code Online (Sandbox Code Playgroud) 下班后,我们经常在办公室玩几轮桌上足球/桌上足球。我整理了一个小的Java程序,该程序从可用的播放器中生成随机的2vs2阵容,然后将比赛结果存储在数据库中。
当前对结果的预测使用来自4个参与玩家的所有先前比赛结果的简单平均值。这给出了一个非常粗略的估计,但是我想用更复杂的东西来代替它,并考虑到以下因素:
尽可能准确地预测比赛结果的最佳算法是什么?
有人建议为此使用神经网络,这听起来很有趣……但是我对该主题没有足够的知识来说是否可行,而且我还怀疑可能需要太多的游戏才能进行合理的训练。
编辑:
由于一些项目的截止日期,不得不从中休息更长的时间。使问题更具体:
给定以下mysql表,其中包含到目前为止进行的所有匹配:
table match_result
match_id int pk
match_start datetime
duration int (match length in seconds)
blue_defense int fk to table player
blue_attack int fk to table player
red_defense int fk to table player
red_attack int fk to table player
score_blue int
score_red int
Run Code Online (Sandbox Code Playgroud)
您将如何编写函数predictResult(blueDef,blueAtk,redDef,redAtk){...}
以尽可能接近地估计结果,执行任何sql,进行计算或使用外部库?
我有一个时间序列数据表,我需要找到在给定时间段内包含至少一个非空值的所有列.到目前为止,我使用以下查询:
select max(field1),max(field2),max(field3),...
from series where t_stamp between x and y
Run Code Online (Sandbox Code Playgroud)
然后,如果结果包含非空值,则检查结果的每个字段.
该表有大约70列,一个时间段可以包含> 100k条目.
我想知道是否有更快的方法来做到这一点(仅使用标准的sql).
编辑:不幸的是,重构表设计不是我的选择.