我有一個 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 無法派生我用于總和聚合的別名類型。
有沒有一種方法可以使用“GREATEST(field1, field2)”進行選擇
慕的地6264312
2023-06-08 19:28:24