如何根据 apache ignite 缓存中的日期获取我的价值总和

How to get the sum of my value based on the dates from apache ignite cache

根据 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));
    }
}

或者,我可以遍历每个结果,但我想先使用 SQL 方式。

将值转换为 double precision 或者,如果需要整个精度,则转换为 numeric:

select sum(value::float)
from myclass
where date between ? and ? and account = ?

float 没有指定精度意味着 double precision

Numeric types