2016-11-27 1 views
0

Je suis en train de résumer les lignes de table après le groupe par, laissez-moi vous expliquer mon problème avec un exemple:somme des lignes après le groupe par dans dsl de requête ou JPQL

1) Je dois calculer le total des dépenses par nom, dept. Je peux le faire en groupe, simple et facile.

par nom:

select e.Employee_name, sum(expenses) 
from Employee e 
group by Employee_name 

par département:

select e.dept, sum(expenses) 
from Employee e 
group by dept 

C'est là que je me bats avec JPA.

2) Je dois calculer le total des dépenses groupées par nom ou par rayon. avec SQL natif que je peux faire requête interne dans la clause FROM comme ci-dessous:

select sum(employeeExpense) 
from (
    select e.Employee_name, sum(expenses) as employeeExpense 
    from Employee e 
    group by Employee_name 
) X 

Je suis coincé à l'étape 2 pour résoudre ce problème en utilisant Jpa, est-il un moyen de le faire dans dsl JPA ou requête?

enter image description here

+0

vous pouvez utiliser createQuery et il vous retournera ce que vous voulez et il vous reviendra objet [] ou objet selon votre requête alors prenez un coup d'oeil lien http://stackoverflow.com/questions/3449719/how-to-run-an-aggregate-function-like-sum-on-two-columns-in-jpa-and-display-thei –

+0

@a_horse_with_no_name: corrigé mon question. – rohith

Répondre

0

alors je vais vous donner une approche de recherche ici utilisation CreateQuery et il vous reviendra quelque chose comme ça

select e.Employee name , sum(expenses) 
from Employee e 
group by Employee name 

@Autowired 
private EntityManager em; 
List<Object[]> list = em.createQuery("select e.EmployeeName , sum(e.exprenses) from Employee e group by e.EmployeeName").getResultList(); 

chacun des éléments de la liste est l'objet [] et l'objet [] avoir le premier élément sera le nom de l'employé et le second sera sum (exprenses)

+0

Je suis à la recherche de la version jpql de la requête à l'étape 2 de ma question. – rohith

+0

deuxième étape juste prendre toutes les dépenses des employés résumé pourquoi faites-vous, il suffit de prendre tous avec somme select() de la table, il travaillera sélectionnez somme (dépenses) de l'employé, il vous donnera tous résumé des dépenses des employés –

+0

désolé si je suis pas clair, j'ai besoin de calculer les dépenses totales après le groupe par.je besoin des dépenses totales regroupées par nom de l'employé et dept. logique ? – rohith