为了账号安全,请及时绑定邮箱和手机立即绑定

有没有一种方法可以使用“GREATEST(field1, field2)”进行选择

有没有一种方法可以使用“GREATEST(field1, field2)”进行选择

慕的地6264312 2023-06-08 19:28:24
我有一个 java 应用程序调用用 HQL 编写的查询,调用 postgres。问题是我希望能够聚合(求和)两个字段,然后投影这些聚合中的“最大”。这可能吗?我认为您可以通过将 greatest 投影为内部选择的输出来执行所谓的“嵌套聚合”查询?但是,如果可以在不嵌套的情况下编写它,那将是首选。select u.id, sum(foo.stat1) as stat1Sum, sum(foo.stat2) as stat2Sum, greatest(stat1Sum, stat2Sum)from u, foowhere u.id = foo.uidgroup by id运行我的查询会导致以下错误:Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode  \-[METHOD_CALL] MethodNode: '('    +-[METHOD_NAME] IdentNode: 'GREATEST' {originalText=GREATEST}    \-[EXPR_LIST] SqlNode: 'exprList'       +-[IDENT] IdentNode: 'archiveBytesTotal' {originalText=archiveBytesTotal}       \-[IDENT] IdentNode: 'selectedBytesTotal' {originalText=selectedBytesTotal}我不认为我在映射对象上犯了任何错误,我认为问题在于 hibernate 无法派生我用于总和聚合的别名类型。
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

HQL 支持的聚合函数是:


avg(...), sum(...), min(...), max(...)


count(*)


count(...), count(distinct ...), count(all...)

查看完整回答
反对 回复 2023-06-08
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

如果可以选择重写查询,您可以尝试FluentJPA,它支持您需要的功能。

查看完整回答
反对 回复 2023-06-08
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信