如何使用聚合函數自訂JPA查詢的結果?
大多數時候,當我們使用 JPA 查詢時,所得到的結果會對應到物件/特定資料類型。但是當我們在查詢中使用聚合函數時,處理結果有時需要我們自訂 JPA 查詢。
讓我們透過一個例子來理解(部門,員工)−
Dept.java
@Entity public class Dept { @Id private Long id; private String name; @OneToMany(mappedBy = "dep") private List<Employee> emp; //Getters //Setters }
一個部門可以有一名或多名員工,但一名員工只能屬於一個部門。
員工.java
@Entity public class Employee { @Id private Long id; private Integer joiningyear; @ManyToOne private Dept dep; //Getters //Setters }
現在,如果我們想取得入職日期以及按入職日期分組的員工人數,
@Repository public interface EmployeeRepository extends JpaRepository<Employee, Long> { // query methods @Query("SELECT e.joiningyear, COUNT(e.joiningyear) FROM Employee AS e GROUP BY e.joiningyear") List<Object[]> countEmployeesByJoiningYear(); }
上述查詢可以正常運作,但是以List
CountEmployees.java
的中文翻譯為:CountEmployees.java
package com.tutorialspoint; public class CountEmployees { private Integer joinyear; private Long totalEmp; public CountEmployees(Integer joinyear, Long totalEmp) { this.joinyear = joinyear; this.totalEmp = totalEmp; } //Getters //Setters }
現在,我們可以自訂我們的JPA查詢,如下所示−
@Query("SELECT new com.tutorialspoint.CountEmployees(e.joiningyear, COUNT(e.joiningyear)) " + "FROM Employee AS e GROUP BY e.joiningyear") List<CountEmployees> countEmployeesByJoining();
上述選擇查詢的結果將會對應到 CountEmployees 類別。透過這種方式,我們可以自訂 JPA 查詢並將結果對應到 java 類別。
以上是如何使用聚合函數自訂JPA查詢的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Oracle 中的 SUM 用於計算非空數值的總和,而 COUNT 則計入所有資料類型的非空值數量,包括重複值。

SQL SUM 函數透過將一組數字相加來計算它們的總和。其運算過程包括:1. 識別輸入值;2. 循環輸入值並將其轉換為數字;3. 對每個數字進行加法,累積一個總和;4. 傳回總和結果。

SQL 中的聚合函數用於計算並傳回一組行的單一值。常見的聚合函數包括:數值聚合函數:COUNT()、SUM()、AVG()、MIN()、MAX()行集合聚合函數:GROUP_CONCAT()、FIRST()、LAST()統計聚合函數:STDDEV ()、VARIANCE()選用聚合函數:COUNT(DISTINCT)、TOP(N)

SQL中的SUM()函數用來計算數字列的總和。它可以根據指定列、篩選條件、別名、分組和聚合多個列來計算總和,但僅處理數字值,忽略NULL值。

Oracle 中 COUNT 函數用於統計指定列或表達式中的非空值,語法為 COUNT(DISTINCT <column_name>) 或 COUNT(*),分別計算唯一值和所有非空值的個數。

MySQL 的 AVG() 函數用於計算數字值的平均值。它支援多種用法,包括:計算所有銷售產品的平均數量:SELECT AVG(quantity_sold) FROM sales;計算價格的平均值:AVG(price);計算銷售額的平均值:AVG(quantity_sold * price)。 AVG() 函數忽略 NULL 值,使用 IFNULL() 可計算非空值的平均值。

使用 GROUP BY 和 ORDER BY 可以對分組資料進行排序:1. GROUP BY 分組資料;2. ORDER BY 排序每組資料。
