gpt4 book ai didi

postgresql - 调用聚合函数 JOOQ 的别名列结果

转载 作者:行者123 更新时间:2023-11-29 13:27:59 24 4
gpt4 key购买 nike

我目前正在尝试从 JOOQ 查询生成器和 PostgreSQL 作为数据库的查询中检索单个 double 值,前提是 DRINKS.PRICE 是 double 类型,ORDER_DRINK.QTY 是整数类型。

Record rec = create.select(DSL.sum(DRINKS.PRICE.multiply(ORDER_DRINK.QTY)).as("am_due")).from(ORDERS
.join(ORDER_DRINK
.join(DRINKS)
.on(DRINKS.DRINK_KEY.equal(ORDER_DRINK.DRINK_KEY)))
.on(ORDERS.ORDKEY.equal(ORDER_DRINK.ORDER_KEY)))
.where(ORDERS.TOKEN.eq(userToken))
.fetchOne();

正如我从(简短的)教程中了解到的那样,一旦我从该别名记录中检索到值,形式为:

double v = rec.getValue("am_due");

我应该将所有价格的总和乘以它们的数量。尽管如此,我还是得到了 NullPointerException。

我们非常欢迎任何帮助。谢谢。

最佳答案

你的 jOOQ 用法是正确的,但我怀疑你的总和只是 null 因为:

  • 您的加入没有返回任何记录
  • 你所有的乘法操作数都是null

并且由于您将 Double 拆箱为 double,因此您将获得 NullPointerException。你可以解决这个问题

... 使用 Java:

Double v1 = rec.getValue("am_due");               // will return null
double v2 = rec.getValue("am_due", double.class); // will return 0.0

... 使用 jOOQ/SQL

Record rec = create.select(DSL.nvl(
DSL.sum(
DRINKS.PRICE.multiply(ORDER_DRINK.QTY)
), 0.0
).as("am_due"))

关于postgresql - 调用聚合函数 JOOQ 的别名列结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057762/

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