我有一个 java 应用程序调用用 HQL 编写的查询,调用 postgres。问题是我希望能够聚合(求和)两个字段,然后投影这些聚合中的“最大”。
这可能吗?
我认为您可以通过将 greatest 投影为内部选择的输出来执行所谓的“嵌套聚合”查询?但是,如果可以在不嵌套的情况下编写它,那将是首选。
select u.id, sum(foo.stat1) as stat1Sum, sum(foo.stat2) as stat2Sum, greatest(stat1Sum, stat2Sum)
from u, foo
where u.id = foo.uid
group 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 无法派生我用于总和聚合的别名类型。
杨__羊羊
qq_遁去的一_1
相关分类