Sql 如何根据ApacheIgnite缓存中的日期获取我的值之和
根据ignite缓存中的日期获取我的值之和的最佳方法是什么 我从我的postgres数据库中根据选定的日期获取所需的所有数据 值的类型为MyClass.class中的字符串Sql 如何根据ApacheIgnite缓存中的日期获取我的值之和,sql,postgresql,caching,ignite,Sql,Postgresql,Caching,Ignite,根据ignite缓存中的日期获取我的值之和的最佳方法是什么 我从我的postgres数据库中根据选定的日期获取所需的所有数据 值的类型为MyClass.class中的字符串 date | value | account 01-01-2015 | 363947.5636999999987892806529998779296875 | 110589 23-08-2016 | 56985.563699999998789
date | value | account
01-01-2015 | 363947.5636999999987892806529998779296875 | 110589
23-08-2016 | 56985.5636999999987892806529998779296875 | 110589
30-11-2016 | 875347.5636999999987892806529998779296875 | 110589
23-11-2016 | 756247.5636999999987892806529998779296875 | 225863
然后我想使用缓存查询对返回的值求和。最好的方法是什么
IgniteConfiguration ignitionConfig = new IgniteConfiguration();
ignitionConfig.setCacheConfiguration(cfg);
Ignite ignite = Ignition.getOrStart(ignitionConfig);
IgniteCache<Integer, MyClass> cache = ignite.getOrCreateCache(cfg);
StringBuilder builder = new StringBuilder();
builder.append(" SELECT SUM(value) FROM MyClass WHERE");
builder.append(" date BETWEEN ? AND ? AND ");
builder.append(" account = ? ");
SqlFieldsQuery qry = new SqlFieldsQuery(builder.toString());
qry.setArgs(startDate);
qry.setArgs(endDate);
qry.setArgs(account);
try (QueryCursor<List<?>> cursor = cache.query(qry)) {
for (List<?> row : cursor){
System.out.println("test=" + row.get(0));
}
}
IgniteConfigurationIgnitionConfig=new IgniteConfiguration();
ignitionConfig.setCacheConfiguration(cfg);
Ignite Ignite=Ignition.getOrStart(ignitionConfig);
IgniteCache cache=ignite.getOrCreateCache(cfg);
StringBuilder=新的StringBuilder();
append(“从MyClass中选择SUM(value));
建造商。附加(“日期介于?和?之间”);
附加(“账户=?”);
SqlFieldsQuery qry=新的SqlFieldsQuery(builder.toString());
qry.setArgs(起始日期);
qry.setArgs(结束日期);
qry.setArgs(账户);
try(QueryCursor行:游标){
System.out.println(“test=“+row.get(0));
}
}
或者,我可以循环查看每个结果,但我想先使用SQL方式。将值转换为双精度,或者,如果需要整个精度,则转换为数值:
select sum(value::float)
from myclass
where date between ? and ? and account = ?
float
不指定精度意味着双精度
问题出在哪里?我在“总和(值)”的错误数据类型上得到了错误总和或平均值;SQL语句:我怀疑这是因为它被保存为字符串。尝试将其转换为_编号(值)不起作用。非常感谢!我的头撞在墙上了。我得到了一些奇怪的结果。日期以字符串形式返回,即2016年1月1日。我是否需要将其转换为日期格式,以便ignite正确理解它?或者我需要为此创建自定义函数类吗?