gpt4 book ai didi

sql - 如何根据 apache ignite 缓存中的日期获取我的值(value)总和

转载 作者:行者123 更新时间:2023-11-29 12:03:47 26 4
gpt4 key购买 nike

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

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

在MyClass.class中value是String类型

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 ,或者,如果需要全精度,则转换为numeric:

select sum(value::float)
from myclass
where date between ? and ? and account = ?
未指定精度的

float 表示 double

Numeric types

关于sql - 如何根据 apache ignite 缓存中的日期获取我的值(value)总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39268275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com