簡體   English   中英

Java Hibernate JPQL查詢(匯總Function:計數)

[英]Java Hibernate JPQL Query (Aggregate Function: count)

在加入期間,我得到下表(示例):

+----------+----------+
| Hostname | Severity |
+----------+----------+
| host1    |   high   |
| host2    |  medium  |
| host1    |   high   |
| host2    |   low    |
| host1    |   low    |
| host2    |   low    |
| host1    |   low    |
| host2    |   high   |
| host1    |   high   |
| host2    |   high   |
+----------+----------+

是否可以創建我得到以下結果的 JPQL 查詢:

+----------+------+--------+-----+
| Hostname | high | medium | low |
+----------+------+--------+-----+
| host1    |  3   |   0    |  2  |
| host2    |  2   |   1    |  2  |
+----------+------+--------+-----+

我嘗試了COUNTGROUP BY但我得到了類似的東西:

host1,high,3
host1,medium,0
host1,low,2

ETC...

BR,雷內

標准的 sql 查詢看起來像這樣 - 我不確定您正在使用的 API 需要付出什么努力,但它是一個非常簡單的組,具有案例邏輯。

select hostname, 
  sum(case when severity = 'high' then 1 else 0 end) as high,
  sum(case when severity = 'medium' then 1 else 0 end) as medium,
  sum(case when severity = 'low' then 1 else 0 end) as low
from
  Table
group by
  hostname
order by
  hostname

實際上,您的結果看起來不錯,每個“單元格”只有一行。

如果您希望每個Severity條目都有一個列,則必須使用子選擇,這不值得麻煩,IMO。 只需閱讀您獲得的行並將它們手動轉換為矩陣格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM