亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有一種方法可以使用“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條經驗 獲得超8個贊

如果可以選擇重寫查詢,您可以嘗試FluentJPA,它支持您需要的功能。

查看完整回答
反對 回復 2023-06-08
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號