Sql 如何根据ApacheIgnite缓存中的日期获取我的值之和

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

根据ignite缓存中的日期获取我的值之和的最佳方法是什么

我从我的postgres数据库中根据选定的日期获取所需的所有数据

值的类型为MyClass.class中的字符串

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正确理解它?或者我需要为此创建自定义函数类吗?